From 0a229140b86735e909f7e596378e7e7013825076 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Thu, 13 Dec 2007 12:18:52 +0000 Subject: [PATCH] Work to fix glitches with progress toolbar (fixes NB#78458). * src/maemo/modest-progress-bar-widget.c: * Now we make sure we never set a NULL string as label of the progress bar, and we get an initial " " string. This is for getting always the expected height. This should prevent some toolbar resizements. * src/maemo/modest-msg-view-window.c, src/maemo/modest-main-window.c: * Rework the toolbar buttons size management. This way the progress toolbar does not cause a resize of the other buttons. * src/maemo/ui/modest-msg-view-window-ui.xml, src/maemo/ui/modest-main-window-ui.xml: * Add position attributes to toolbar. pmo-trunk-r3910 --- src/maemo/modest-main-window.c | 68 +++++++++++++++++++++------- src/maemo/modest-msg-view-window.c | 67 +++++++++++++++++++-------- src/maemo/modest-progress-bar-widget.c | 6 ++- src/maemo/ui/modest-main-window-ui.xml | 8 ++-- src/maemo/ui/modest-msg-view-window-ui.xml | 8 ++-- 5 files changed, 112 insertions(+), 45 deletions(-) diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index 614fe61..b65c551 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -1330,6 +1330,53 @@ modest_main_window_get_style (ModestMainWindow *self) return priv->style; } +static void +toolbar_resize (ModestMainWindow *self) +{ + ModestMainWindowPrivate *priv = NULL; + ModestWindowPrivate *parent_priv = NULL; + GtkWidget *widget; + gint static_button_size; + ModestWindowMgr *mgr; + + g_return_if_fail (MODEST_IS_MAIN_WINDOW (self)); + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + parent_priv = MODEST_WINDOW_GET_PRIVATE(self); + + mgr = modest_runtime_get_window_mgr (); + static_button_size = modest_window_mgr_get_fullscreen_mode (mgr)?118:108; + + if (parent_priv->toolbar) { + /* left size buttons */ + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNew"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReply"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarDeleteMessage"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToggleFolders"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->refresh_toolitem), TRUE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->refresh_toolitem), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->sort_toolitem), TRUE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->sort_toolitem), TRUE); + } + +} + static gboolean @@ -1353,20 +1400,14 @@ modest_main_window_window_state_event (GtkWidget *widget, GdkEventWindowState *e if (is_fullscreen != active) { gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (fs_toggle_action), is_fullscreen); } + + toolbar_resize (MODEST_MAIN_WINDOW (widget)); } return FALSE; } -static void -set_homogeneous (GtkWidget *widget, - gpointer data) -{ - gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), TRUE); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), TRUE); -} - static void modest_main_window_show_toolbar (ModestWindow *self, gboolean show_toolbar) @@ -1391,19 +1432,12 @@ modest_main_window_show_toolbar (ModestWindow *self, "/ToolBar"); gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE); - /* Set homogeneous toolbar */ - gtk_container_foreach (GTK_CONTAINER (parent_priv->toolbar), - set_homogeneous, NULL); - priv->progress_toolitem = GTK_WIDGET (gtk_tool_item_new ()); priv->cancel_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarCancel"); priv->refresh_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarSendReceive"); priv->sort_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarSort"); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); - gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); - gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); - + toolbar_resize (MODEST_MAIN_WINDOW (self)); + /* Add ProgressBar (Transfer toolbar) */ priv->progress_bar = modest_progress_bar_widget_new (); gtk_widget_set_no_show_all (priv->progress_bar, TRUE); diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index ddb972f..0360e2d 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -1920,6 +1920,53 @@ modest_msg_view_window_update_priority (ModestMsgViewWindow *window) } +static void +toolbar_resize (ModestMsgViewWindow *self) +{ + ModestMsgViewWindowPrivate *priv = NULL; + ModestWindowPrivate *parent_priv = NULL; + GtkWidget *widget; + gint static_button_size; + ModestWindowMgr *mgr; + + g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self)); + priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); + parent_priv = MODEST_WINDOW_GET_PRIVATE(self); + + mgr = modest_runtime_get_window_mgr (); + static_button_size = modest_window_mgr_get_fullscreen_mode (mgr)?118:108; + + if (parent_priv->toolbar) { + /* left size buttons */ + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReply"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageMoveTo"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarDeleteMessage"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/FindInMessage"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE); + gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1); + + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->next_toolitem), TRUE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->next_toolitem), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->prev_toolitem), TRUE); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->prev_toolitem), TRUE); + } + +} + static gboolean modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata) { @@ -1940,6 +1987,7 @@ modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowStat if (is_fullscreen != active) { gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (fs_toggle_action), is_fullscreen); } + toolbar_resize (MODEST_MSG_VIEW_WINDOW (widget)); } return FALSE; @@ -1947,16 +1995,6 @@ modest_msg_view_window_window_state_event (GtkWidget *widget, GdkEventWindowStat } static void -set_homogeneous (GtkWidget *widget, - gpointer data) -{ - if (GTK_IS_TOOL_ITEM (widget)) { - gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), TRUE); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), TRUE); - } -} - -static void modest_msg_view_window_show_toolbar (ModestWindow *self, gboolean show_toolbar) { @@ -1979,18 +2017,11 @@ modest_msg_view_window_show_toolbar (ModestWindow *self, "/ToolBar"); gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE); - /* Set homogeneous toolbar */ - gtk_container_foreach (GTK_CONTAINER (parent_priv->toolbar), - set_homogeneous, NULL); - priv->progress_toolitem = GTK_WIDGET (gtk_tool_item_new ()); priv->cancel_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarCancel"); priv->next_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNext"); priv->prev_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageBack"); - gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE); - gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); - gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE); + toolbar_resize (MODEST_MSG_VIEW_WINDOW (self)); /* Add ProgressBar (Transfer toolbar) */ priv->progress_bar = modest_progress_bar_widget_new (); diff --git a/src/maemo/modest-progress-bar-widget.c b/src/maemo/modest-progress-bar-widget.c index 7dd8a79..5dd1b7d 100644 --- a/src/maemo/modest-progress-bar-widget.c +++ b/src/maemo/modest-progress-bar-widget.c @@ -178,6 +178,7 @@ modest_progress_bar_widget_init (ModestProgressBarWidget *self) gtk_progress_set_text_alignment (GTK_PROGRESS (priv->progress_bar), 0, 0.5); gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR (priv->progress_bar), PANGO_ELLIPSIZE_END); gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (priv->progress_bar), 0.05); + gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progress_bar), " "); gtk_widget_size_request (priv->progress_bar, &req); gtk_container_add (GTK_CONTAINER (align), priv->progress_bar); gtk_widget_size_request (align, &req); @@ -394,7 +395,7 @@ static gboolean progressbar_clean (GtkProgressBar *bar) { gtk_progress_bar_set_fraction (bar, 0); - gtk_progress_bar_set_text (bar, 0); + gtk_progress_bar_set_text (bar, " "); return FALSE; } @@ -440,7 +441,8 @@ modest_progress_bar_widget_set_progress (ModestProgressBarWidget *self, } /* Set text */ - gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progress_bar), message); + gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progress_bar), + (message && message[0] != '\0')?message:" "); } diff --git a/src/maemo/ui/modest-main-window-ui.xml b/src/maemo/ui/modest-main-window-ui.xml index a17612d..11d1f7b 100644 --- a/src/maemo/ui/modest-main-window-ui.xml +++ b/src/maemo/ui/modest-main-window-ui.xml @@ -107,10 +107,10 @@ - - - - + + + + diff --git a/src/maemo/ui/modest-msg-view-window-ui.xml b/src/maemo/ui/modest-msg-view-window-ui.xml index 120cc13..244140e 100644 --- a/src/maemo/ui/modest-msg-view-window-ui.xml +++ b/src/maemo/ui/modest-msg-view-window-ui.xml @@ -100,11 +100,11 @@ - - - + + + - + -- 1.7.9.5