X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-main-window.c;h=ee1df3c6ee8cbab2b70788fc605bb9b377bd690f;hp=843d49992ba446f1c1b62fc68312b329438c2cc6;hb=0cdee01bf8cf5fda723afeaba078eb1211a12660;hpb=2290a841d02ff9980feb86a96c2ac341b4dd0511 diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index 843d499..ee1df3c 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -178,6 +178,9 @@ static gboolean restore_paned_timeout_handler (gpointer *data); static gboolean show_retrieving_banner (gpointer user_data); +static void on_window_destroy (GtkObject *widget, + gpointer userdata); + typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate; struct _ModestMainWindowPrivate { GtkWidget *msg_paned; @@ -651,6 +654,8 @@ update_menus (ModestMainWindow* self) display_name = g_strdup_printf (_("mcen_me_toolbar_sendreceive_mailbox_n"), modest_account_settings_get_display_name (settings)); } + + /* Create action and add it to the action group. The action name must be the account name, this way we @@ -659,9 +664,13 @@ update_menus (ModestMainWindow* self) gchar* item_name, *refresh_action_name; guint8 merge_id = 0; GtkAction *view_account_action, *refresh_account_action; + gchar *escaped_display_name; + + escaped_display_name = modest_text_utils_escape_mnemonics (display_name); view_account_action = GTK_ACTION (gtk_radio_action_new (account_name, - display_name, NULL, NULL, 0)); + escaped_display_name, NULL, NULL, 0)); + g_free (escaped_display_name); gtk_action_group_add_action (priv->view_additions_group, view_account_action); gtk_radio_action_set_group (GTK_RADIO_ACTION (view_account_action), radio_group); radio_group = gtk_radio_action_get_group (GTK_RADIO_ACTION (view_account_action)); @@ -985,6 +994,9 @@ connect_signals (ModestMainWindow *self) modest_signal_mgr_connect (priv->sighandlers,G_OBJECT (self), "window-state-event", G_CALLBACK (modest_main_window_window_state_event), NULL); + /* we don't register this in sighandlers, as it should be run after disconnecting all signals, + * in destroy stage */ + g_signal_connect (G_OBJECT (self), "destroy", G_CALLBACK (on_window_destroy), NULL); /* Mail Operation Queue */ priv->sighandlers = @@ -2758,6 +2770,35 @@ modest_main_window_screen_is_on (ModestMainWindow *self) return (priv->display_state == OSSO_DISPLAY_ON) ? TRUE : FALSE; } +static void +on_window_destroy (GtkObject *widget, gpointer userdata) +{ + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE (widget); + + if (priv->retrieving_banner_timeout > 0) { + g_source_remove (priv->retrieving_banner_timeout); + priv->retrieving_banner_timeout = 0; + } + + if (priv->retrieving_banner != NULL) { + gtk_widget_destroy (priv->retrieving_banner); + priv->retrieving_banner = NULL; + } + + if (priv->updating_banner_timeout > 0) { + g_source_remove (priv->updating_banner_timeout); + priv->updating_banner_timeout = 0; + } + + if (priv->updating_banner != NULL) { + gtk_widget_destroy (priv->updating_banner); + priv->updating_banner = NULL; + } + +} + static gboolean show_retrieving_banner (gpointer user_data) {