Work to fix glitches with progress toolbar (fixes NB#78458).
authorJose Dapena Paz <jdapena@igalia.com>
Thu, 13 Dec 2007 12:18:52 +0000 (12:18 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Thu, 13 Dec 2007 12:18:52 +0000 (12:18 +0000)
* 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
src/maemo/modest-msg-view-window.c
src/maemo/modest-progress-bar-widget.c
src/maemo/ui/modest-main-window-ui.xml
src/maemo/ui/modest-msg-view-window-ui.xml

index 614fe61..b65c551 100644 (file)
@@ -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);
index ddb972f..0360e2d 100644 (file)
@@ -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 ();
index 7dd8a79..5dd1b7d 100644 (file)
@@ -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:" ");
 }
 
 
index a17612d..11d1f7b 100644 (file)
     <toolitem action="ToolbarMessageReply"/> 
     <toolitem action="ToolbarDeleteMessage"/>
     <toolitem action="ToggleFolders"/>
-    <toolitem action="ToolbarSort"/>
-    <toolitem action="ToolbarSendReceive"/>
-    <placeholder name="ProgressBarView" />
-    <toolitem action="ToolbarCancel"/>
+    <toolitem action="ToolbarSort" position="bot"/>
+    <toolitem action="ToolbarSendReceive" position="bot"/>
+    <placeholder name="ProgressBarView"  position="bot"/>
+    <toolitem action="ToolbarCancel" position="bot"/>
   </toolbar>
 
   <popup name="HeaderViewCSM">
index 120cc13..244140e 100644 (file)
     <toolitem action="ToolbarMessageMoveTo"/>
     <toolitem action="ToolbarDeleteMessage"/>
     <toolitem action="FindInMessage"/>
-    <toolitem action="ToolbarMessageBack"/>
-    <toolitem action="ToolbarMessageNext"/>
-    <placeholder name="ProgressbarView">
+    <toolitem action="ToolbarMessageBack" position="bot"/>
+    <toolitem action="ToolbarMessageNext" position="bot"/>
+    <placeholder name="ProgressbarView" position="bot">
     </placeholder>
-    <toolitem action="ToolbarCancel"/>
+    <toolitem action="ToolbarCancel" position="bot"/>
   </toolbar>
 
   <popup name="ToolbarReplyCSM">