From 302db1d96a9e535fe78a3d438e5ae813f87cece3 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Tue, 29 Jul 2008 09:56:38 +0000 Subject: [PATCH] * Fixes NB#87094, dimm the toolbar buttons when the message has been sent pmo-trunk-r5191 --- src/maemo/modest-msg-view-window.c | 40 ++++++++---------------------------- src/modest-ui-actions.c | 2 ++ src/modest-ui-dimming-rules.c | 19 +++++++++++++++++ 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index 6bad4fe..a543f1a 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -1108,34 +1108,13 @@ modest_msg_view_window_on_row_deleted(GtkTreeModel *header_model, { check_dimming_rules_after_change (window); } - -static gboolean -check_dimming_rules_after_change_in_idle (gpointer data) -{ /* The window could have dissapeared */ - if (MODEST_IS_WINDOW (data)) { - ModestWindow *win = MODEST_WINDOW (data); - gdk_threads_enter (); - modest_ui_actions_check_menu_dimming_rules (win); - modest_ui_actions_check_toolbar_dimming_rules (win); - gdk_threads_leave (); - } - - return FALSE; -} static void check_dimming_rules_after_change (ModestMsgViewWindow *window) { - static guint dimming_delayer = 0; - - if (dimming_delayer > 0) - g_source_remove (dimming_delayer); - - /* We're expecting a lot of changes at the same time so don't - need to check dimming rules for every change that - happens */ - dimming_delayer = g_timeout_add (100, check_dimming_rules_after_change_in_idle, window); + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); } @@ -1688,6 +1667,9 @@ modest_msg_view_window_last_message_selected (ModestMsgViewWindow *window) if (!priv->header_model || !priv->row_reference) return TRUE; + if (!gtk_tree_row_reference_valid (priv->row_reference)) + return TRUE; + path = gtk_tree_row_reference_get_path (priv->row_reference); if (path == NULL) return TRUE; @@ -1755,7 +1737,6 @@ modest_msg_view_window_first_message_selected (ModestMsgViewWindow *window) ModestMsgViewWindowPrivate *priv; gboolean is_first_selected; GtkTreeIter tmp_iter; -/* gchar * path_string;*/ g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), TRUE); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); @@ -1764,18 +1745,13 @@ modest_msg_view_window_first_message_selected (ModestMsgViewWindow *window) if (!priv->header_model || !priv->row_reference) return TRUE; + if (!gtk_tree_row_reference_valid (priv->row_reference)) + return TRUE; + path = gtk_tree_row_reference_get_path (priv->row_reference); if (!path) return TRUE; -/* path_string = gtk_tree_path_to_string (path); - is_first_selected = strcmp (path_string, "0"); - - g_free (path_string); - gtk_tree_path_free (path); - - return is_first_selected;*/ - is_first_selected = TRUE; while (is_first_selected) { TnyHeader *header; diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index a6f1279..d37aa7b 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -6025,6 +6025,8 @@ modest_ui_actions_on_send_queue_status_changed (ModestTnySendQueue *send_queue, /* Rerun dimming rules, because the message could become deletable for example */ modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window), MODEST_DIMMING_RULES_TOOLBAR); + modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window), + MODEST_DIMMING_RULES_MENU); /* Free */ frees: diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 71d32f8..6b6ae5b 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -777,6 +777,15 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, _CS("ckct_ib_unable_to_delete")); } + + /* This could happen if we're viewing a message of the + outbox that has been already sent */ + if (!dimmed) { + ModestMsgViewWindow *view_window = MODEST_MSG_VIEW_WINDOW (win); + if (modest_msg_view_window_last_message_selected (view_window) && + modest_msg_view_window_first_message_selected (view_window)) + dimmed = TRUE; + } /* The delete button should be dimmed when viewing an attachment, * but should be enabled when viewing a message from the list, @@ -1041,6 +1050,16 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user if (dimmed) modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); } + + /* This could happen if we're viewing a message of the outbox + that has been already sent */ + if (!dimmed) { + ModestMsgViewWindow *view_window = MODEST_MSG_VIEW_WINDOW (win); + if (modest_msg_view_window_last_message_selected (view_window) && + modest_msg_view_window_first_message_selected (view_window)) + dimmed = TRUE; + } + if (!dimmed) { if (MODEST_IS_MSG_VIEW_WINDOW (win)) { /* The move_to button should be dimmed when viewing an attachment, -- 1.7.9.5