X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-main-window.c;h=7edf963e28cf9f58010971abf5ee8f3458740cae;hp=9863af4501764d7ba75352382e9f326c5699f25f;hb=627c4af6ac85444cc3256fa568baf4a8d62178ae;hpb=9ab5ffc33414a1db9b753b9e70faae4bee0fe104 diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index 9863af4..7edf963 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include "modest-hildon-includes.h" #include "modest-defs.h" @@ -176,7 +175,7 @@ static void on_updating_msg_list (ModestHeaderView *header_view, static gboolean restore_paned_timeout_handler (gpointer *data); -static gboolean show_retrieving_banner (gpointer user_data); +static gboolean show_opening_banner (gpointer user_data); static void on_window_destroy (GtkObject *widget, gpointer userdata); @@ -236,9 +235,9 @@ struct _ModestMainWindowPrivate { GtkWidget *updating_banner; guint updating_banner_timeout; - /* "Retrieving" banner for header view */ - GtkWidget *retrieving_banner; - guint retrieving_banner_timeout; + /* "Opening" banner for header view */ + GtkWidget *opening_banner; + guint opening_banner_timeout; /* Display state */ osso_display_state_t display_state; @@ -369,8 +368,8 @@ modest_main_window_init (ModestMainWindow *obj) priv->sighandlers = NULL; priv->updating_banner = NULL; priv->updating_banner_timeout = 0; - priv->retrieving_banner = NULL; - priv->retrieving_banner_timeout = 0; + priv->opening_banner = NULL; + priv->opening_banner_timeout = 0; priv->display_state = OSSO_DISPLAY_ON; modest_window_mgr_register_help_id (modest_runtime_get_window_mgr(), @@ -419,14 +418,14 @@ modest_main_window_finalize (GObject *obj) priv->updating_banner = NULL; } - if (priv->retrieving_banner_timeout > 0) { - g_source_remove (priv->retrieving_banner_timeout); - priv->retrieving_banner_timeout = 0; + if (priv->opening_banner_timeout > 0) { + g_source_remove (priv->opening_banner_timeout); + priv->opening_banner_timeout = 0; } - if (priv->retrieving_banner) { - gtk_widget_destroy (priv->retrieving_banner); - priv->retrieving_banner = NULL; + if (priv->opening_banner) { + gtk_widget_destroy (priv->opening_banner); + priv->opening_banner = NULL; } if (priv->restore_paned_timeout > 0) { @@ -2223,7 +2222,8 @@ modest_main_window_set_contents_style (ModestMainWindow *self, wrap_in_scrolled_window (priv->contents_widget, priv->details_widget); } - g_object_unref (selected_folderstore); + if (selected_folderstore) + g_object_unref (selected_folderstore); modest_maemo_set_thumbable_scrollbar (GTK_SCROLLED_WINDOW(priv->contents_widget), FALSE); } @@ -2467,7 +2467,6 @@ get_toolbar_mode_from_mail_operation (ModestMainWindow *self, switch (modest_mail_operation_get_type_operation (mail_op)) { case MODEST_MAIL_OPERATION_TYPE_SEND_AND_RECEIVE: case MODEST_MAIL_OPERATION_TYPE_RECEIVE: - case MODEST_MAIL_OPERATION_TYPE_OPEN: mode = TOOLBAR_MODE_TRANSFER; if (priv->current_toolbar_mode == TOOLBAR_MODE_NORMAL) *mode_changed = TRUE; @@ -2497,7 +2496,7 @@ on_mail_operation_started (ModestMailOperation *mail_op, account is the local account or the MMC one */ op_type = modest_mail_operation_get_type_operation (mail_op); account = modest_mail_operation_get_account (mail_op); - if (account && op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) { + if (account && op_type == MODEST_MAIL_OPERATION_TYPE_OPEN) { gboolean is_remote; is_remote = !(modest_tny_account_is_virtual_local_folders (account) || @@ -2508,13 +2507,13 @@ on_mail_operation_started (ModestMailOperation *mail_op, } /* Show information banner. Remove old timeout */ - if (priv->retrieving_banner_timeout > 0) { - g_source_remove (priv->retrieving_banner_timeout); - priv->retrieving_banner_timeout = 0; + if (priv->opening_banner_timeout > 0) { + g_source_remove (priv->opening_banner_timeout); + priv->opening_banner_timeout = 0; } /* Create a new timeout */ - priv->retrieving_banner_timeout = - g_timeout_add (2000, show_retrieving_banner, self); + priv->opening_banner_timeout = + g_timeout_add (2000, show_opening_banner, self); } /* Not every mail operation has account, noop does not */ @@ -2566,7 +2565,7 @@ on_mail_operation_finished (ModestMailOperation *mail_op, the account was the local account or the MMC one */ op_type = modest_mail_operation_get_type_operation (mail_op); account = modest_mail_operation_get_account (mail_op); - if (account && op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) { + if (account && op_type == MODEST_MAIL_OPERATION_TYPE_OPEN) { gboolean is_remote; is_remote = !(modest_tny_account_is_virtual_local_folders (account) || @@ -2577,15 +2576,15 @@ on_mail_operation_finished (ModestMailOperation *mail_op, } /* Remove old timeout */ - if (priv->retrieving_banner_timeout > 0) { - g_source_remove (priv->retrieving_banner_timeout); - priv->retrieving_banner_timeout = 0; + if (priv->opening_banner_timeout > 0) { + g_source_remove (priv->opening_banner_timeout); + priv->opening_banner_timeout = 0; } /* Remove the banner if exists */ - if (priv->retrieving_banner) { - gtk_widget_destroy (priv->retrieving_banner); - priv->retrieving_banner = NULL; + if (priv->opening_banner) { + gtk_widget_destroy (priv->opening_banner); + priv->opening_banner = NULL; } } @@ -2995,14 +2994,14 @@ remove_banners (ModestMainWindow *window) priv = MODEST_MAIN_WINDOW_GET_PRIVATE (window); - if (priv->retrieving_banner_timeout > 0) { - g_source_remove (priv->retrieving_banner_timeout); - priv->retrieving_banner_timeout = 0; + if (priv->opening_banner_timeout > 0) { + g_source_remove (priv->opening_banner_timeout); + priv->opening_banner_timeout = 0; } - if (priv->retrieving_banner != NULL) { - gtk_widget_destroy (priv->retrieving_banner); - priv->retrieving_banner = NULL; + if (priv->opening_banner != NULL) { + gtk_widget_destroy (priv->opening_banner); + priv->opening_banner = NULL; } if (priv->updating_banner_timeout > 0) { @@ -3057,6 +3056,19 @@ on_window_destroy (GtkObject *widget, remove_banners (MODEST_MAIN_WINDOW (widget)); } +<<<<<<< .working +static void +opening_banner_destroyed (gpointer data, + GObject *where_the_object_was) +{ + ModestMainWindowPrivate *priv = NULL; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE (data); + + priv->opening_banner = NULL; +} + +======= static void retrieving_banner_destroyed (gpointer data, GObject *where_the_object_was) @@ -3068,20 +3080,28 @@ retrieving_banner_destroyed (gpointer data, priv->retrieving_banner = NULL; } +>>>>>>> .merge-right.r5668 static gboolean -show_retrieving_banner (gpointer user_data) +show_opening_banner (gpointer user_data) { ModestMainWindowPrivate *priv = NULL; priv = MODEST_MAIN_WINDOW_GET_PRIVATE (user_data); - if (priv->retrieving_banner == NULL) { + if (priv->opening_banner == NULL) { /* We're outside the main lock */ gdk_threads_enter (); - priv->retrieving_banner = + priv->opening_banner = modest_platform_animation_banner (GTK_WIDGET (user_data), NULL, - _("mcen_ib_getting_items")); + _("mail_me_opening")); + + /* We need this because banners in Maemo could be + destroyed by dialogs so we need to properly update + our reference to it */ + g_object_weak_ref (G_OBJECT (priv->opening_banner), + opening_banner_destroyed, + user_data); /* We need this because banners in Maemo could be destroyed by dialogs so we need to properly update @@ -3093,6 +3113,6 @@ show_retrieving_banner (gpointer user_data) } /* Remove timeout */ - priv->retrieving_banner_timeout = 0; + priv->opening_banner_timeout = 0; return FALSE; }