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;
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
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));
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 =
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)
{