[Xfce4-commits] <ristretto:master> Improve merge-toolbar behaviour

Stephan Arts noreply at xfce.org
Sun Oct 16 16:30:02 CEST 2011


Updating branch refs/heads/master
         to e73c395d8d4efce63e782a3f34ddea5076c30604 (commit)
       from 1b4aa9dba3b528d0f93c0a6c8547d84b172db839 (commit)

commit e73c395d8d4efce63e782a3f34ddea5076c30604
Author: Stephan Arts <stephan at xfce.org>
Date:   Sun Oct 16 16:25:59 2011 +0200

    Improve merge-toolbar behaviour
    
    - Merge to the top toolbar
    - Decrease toolbar timeout until hiding the toolbar in fullscreen mode.

 src/image_list.c       |    2 +
 src/main_window.c      |  515 ++++++++++++++++++++++++++++++++++++++++--------
 src/main_window_ui.xml |   21 ++-
 3 files changed, 448 insertions(+), 90 deletions(-)

diff --git a/src/image_list.c b/src/image_list.c
index 0aa7a0d..a26c195 100644
--- a/src/image_list.c
+++ b/src/image_list.c
@@ -14,6 +14,8 @@
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *  Sorting-algorithm taken from the thunar filemanager.
  */
 
 #include <config.h>
diff --git a/src/main_window.c b/src/main_window.c
index b4b9d4f..6232a5d 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -537,7 +537,11 @@ rstto_main_window_init (RsttoMainWindow *window)
     gtk_tool_item_set_expand (GTK_TOOL_ITEM (separator), TRUE);
     gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (separator), FALSE);
 
-    separator = gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/separator-2");
+    separator = gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/separator-1");
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM (separator), TRUE);
+    gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (separator), FALSE);
+
+    separator = gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/separator-2");
     gtk_tool_item_set_expand (GTK_TOOL_ITEM (separator), TRUE);
     gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (separator), FALSE);
 
@@ -625,13 +629,28 @@ rstto_main_window_init (RsttoMainWindow *window)
                            "play",
                            GTK_UI_MANAGER_TOOLITEM,
                            FALSE);
-    gtk_ui_manager_add_ui (window->priv->ui_manager,
-                           window->priv->toolbar_fullscreen_merge_id,
-                           "/navigation-toolbar/placeholder-fullscreen",
-                           "fullscreen",
-                           "fullscreen",
-                           GTK_UI_MANAGER_TOOLITEM,
-                           FALSE);
+    if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_fullscreen_merge_id,
+                "/file-toolbar/placeholder-fullscreen",
+                "fullscreen",
+                "fullscreen",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+    }
+    else
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_fullscreen_merge_id,
+                "/navigation-toolbar/placeholder-fullscreen",
+                "fullscreen",
+                "fullscreen",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+    }
 
     /**
      * Retrieve the last window-size from the settings-manager
@@ -986,8 +1005,29 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
                                        "play", "play", GTK_UI_MANAGER_MENUITEM, FALSE);
                 gtk_ui_manager_remove_ui (window->priv->ui_manager, window->priv->pause_merge_id);
 
-                gtk_ui_manager_add_ui (window->priv->ui_manager, window->priv->toolbar_play_merge_id, "/navigation-toolbar/placeholder-slideshow",
-                                       "play", "play", GTK_UI_MANAGER_TOOLITEM, FALSE);
+                /* Check if the toolbars are merged */
+                if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+                {
+                    gtk_ui_manager_add_ui (
+                            window->priv->ui_manager,
+                            window->priv->toolbar_play_merge_id,
+                            "/file-toolbar/placeholder-slideshow",
+                            "play",
+                            "play",
+                            GTK_UI_MANAGER_TOOLITEM,
+                            FALSE);
+                }
+                else
+                {
+                    gtk_ui_manager_add_ui (
+                            window->priv->ui_manager,
+                            window->priv->toolbar_play_merge_id,
+                            "/navigation-toolbar/placeholder-slideshow",
+                            "play",
+                            "play",
+                            GTK_UI_MANAGER_TOOLITEM,
+                            FALSE);
+                }
                 gtk_ui_manager_remove_ui (window->priv->ui_manager, window->priv->toolbar_pause_merge_id);
 
                 window->priv->playing = FALSE;
@@ -1003,6 +1043,14 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/save-copy"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/close"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/delete"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/forward"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/back"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-in"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-out"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-fit"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-100"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-ccw"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-cw"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/forward"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/back"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/zoom-in"), FALSE);
@@ -1045,13 +1093,45 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             /* Stop the slideshow if only one image is opened */
             if (window->priv->playing == TRUE)
             {
-                gtk_ui_manager_add_ui (window->priv->ui_manager, window->priv->play_merge_id, "/main-menu/go-menu/placeholder-slideshow",
-                                       "play", "play", GTK_UI_MANAGER_MENUITEM, FALSE);
-                gtk_ui_manager_remove_ui (window->priv->ui_manager, window->priv->pause_merge_id);
+                gtk_ui_manager_add_ui (
+                        window->priv->ui_manager,
+                        window->priv->play_merge_id,
+                        "/main-menu/go-menu/placeholder-slideshow",
+                        "play",
+                        "play",
+                        GTK_UI_MANAGER_MENUITEM,
+                        FALSE);
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->pause_merge_id);
 
-                gtk_ui_manager_add_ui (window->priv->ui_manager, window->priv->toolbar_play_merge_id, "/navigation-toolbar/placeholder-slideshow",
-                                       "play", "play", GTK_UI_MANAGER_TOOLITEM, FALSE);
-                gtk_ui_manager_remove_ui (window->priv->ui_manager, window->priv->toolbar_pause_merge_id);
+                /* Check if the toolbars are merged */
+                if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+                {
+                    gtk_ui_manager_add_ui (
+                            window->priv->ui_manager,
+                            window->priv->toolbar_play_merge_id,
+                            "/file-toolbar/placeholder-slideshow",
+                            "play",
+                            "play",
+                            GTK_UI_MANAGER_TOOLITEM,
+                            FALSE);
+                }
+                else
+                {
+                    gtk_ui_manager_add_ui (
+                            window->priv->ui_manager,
+                            window->priv->toolbar_play_merge_id,
+                            "/navigation-toolbar/placeholder-slideshow",
+                            "play",
+                            "play",
+                            GTK_UI_MANAGER_TOOLITEM,
+                            FALSE);
+                }
+
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_pause_merge_id);
 
                 window->priv->playing = FALSE;
             }
@@ -1069,6 +1149,14 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/save-copy"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/close"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/delete"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/forward"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/back"), FALSE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-in"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-out"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-fit"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-100"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-ccw"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-cw"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/forward"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/back"), FALSE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/zoom-in"), TRUE);
@@ -1121,6 +1209,14 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/save-copy"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/close"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/delete"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/forward"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/back"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-in"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-out"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-fit"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/zoom-100"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-ccw"), TRUE);
+            gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar/rotate-cw"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/forward"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/back"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar/zoom-in"), TRUE);
@@ -1144,35 +1240,113 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/main-menu/view-menu/show-file-toolbar"));
+                    "/main-menu/view-menu/show-nav-toolbar"));
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/file-toolbar"));
+                    "/navigation-toolbar"));
 
+        /* Show buttons */
+        gtk_widget_show (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/back"));
+        gtk_widget_show (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/forward"));
+        gtk_widget_show (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/rotate-cw"));
+        gtk_widget_show (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/rotate-ccw"));
         gtk_widget_show (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/open"));
+                    "/file-toolbar/zoom-in"));
         gtk_widget_show (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/save-copy"));
+                    "/file-toolbar/zoom-out"));
         gtk_widget_show (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/close"));
+                    "/file-toolbar/zoom-100"));
         gtk_widget_show (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/delete"));
+                    "/file-toolbar/zoom-fit"));
+
+        if (window->priv->playing == TRUE)
+        {
+            gtk_ui_manager_remove_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_pause_merge_id);
+            gtk_ui_manager_add_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_pause_merge_id,
+                    "/file-toolbar/placeholder-slideshow",
+                    "pause",
+                    "pause",
+                    GTK_UI_MANAGER_TOOLITEM,
+                    FALSE);
+        }
+        else
+        {
+            gtk_ui_manager_remove_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_play_merge_id);
+            gtk_ui_manager_add_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_play_merge_id,
+                    "/file-toolbar/placeholder-slideshow",
+                    "play",
+                    "play",
+                    GTK_UI_MANAGER_TOOLITEM,
+                    FALSE);
+        }
+        if ( GTK_WIDGET_VISIBLE (window) )
+        {
+            gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_unfullscreen_merge_id);
+            gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_fullscreen_merge_id);
+            /* Do not make the widget visible when in
+             * fullscreen mode.
+             */
+            if ( 0 == (gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_FULLSCREEN ))
+            {
+                gtk_ui_manager_add_ui (window->priv->ui_manager,
+                                       window->priv->toolbar_fullscreen_merge_id,
+                                       "/file-toolbar/placeholder-fullscreen",
+                                       "fullscreen",
+                                       "fullscreen",
+                                       GTK_UI_MANAGER_TOOLITEM,
+                                       FALSE);
+            }
+            else
+            {
+                gtk_ui_manager_add_ui (window->priv->ui_manager,
+                                       window->priv->toolbar_unfullscreen_merge_id,
+                                       "/file-toolbar/placeholder-fullscreen",
+                                       "unfullscreen",
+                                       "unfullscreen",
+                                       GTK_UI_MANAGER_TOOLITEM,
+                                       FALSE);
+            }
+        }
     }
     else
     {
         gtk_widget_show (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/main-menu/view-menu/show-file-toolbar"));
+                    "/main-menu/view-menu/show-nav-toolbar"));
 
         if (rstto_settings_get_boolean_property (
                 window->priv->settings_manager,
@@ -1193,11 +1367,19 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
                 }
             }
         }
-        if (FALSE == rstto_settings_get_boolean_property (
+        else
+        {
+            gtk_widget_hide (
+                gtk_ui_manager_get_widget (
+                        window->priv->ui_manager,
+                        "/file-toolbar"));
+
+        }
+        if (rstto_settings_get_boolean_property (
                 window->priv->settings_manager,
                 "show-nav-toolbar") )
         {
-            gtk_widget_hide (
+            gtk_widget_show (
                 gtk_ui_manager_get_widget (
                         window->priv->ui_manager,
                         "/navigation-toolbar"));
@@ -1207,19 +1389,97 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/open"));
+                    "/file-toolbar/back"));
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/save-copy"));
+                    "/file-toolbar/forward"));
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/close"));
+                    "/file-toolbar/rotate-cw"));
         gtk_widget_hide (
             gtk_ui_manager_get_widget (
                     window->priv->ui_manager,
-                    "/navigation-toolbar/delete"));
+                    "/file-toolbar/rotate-ccw"));
+        gtk_widget_hide (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/zoom-in"));
+        gtk_widget_hide (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/zoom-out"));
+        gtk_widget_hide (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/zoom-100"));
+        gtk_widget_hide (
+            gtk_ui_manager_get_widget (
+                    window->priv->ui_manager,
+                    "/file-toolbar/zoom-fit"));
+
+        if (window->priv->playing == TRUE)
+        {
+            gtk_ui_manager_remove_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_pause_merge_id);
+            gtk_ui_manager_add_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_pause_merge_id,
+                    "/navigation-toolbar/placeholder-slideshow",
+                    "pause",
+                    "pause",
+                    GTK_UI_MANAGER_TOOLITEM,
+                    FALSE);
+        }
+        else
+        {
+            gtk_ui_manager_remove_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_play_merge_id);
+            gtk_ui_manager_add_ui (
+                    window->priv->ui_manager,
+                    window->priv->toolbar_play_merge_id,
+                    "/navigation-toolbar/placeholder-slideshow",
+                    "play",
+                    "play",
+                    GTK_UI_MANAGER_TOOLITEM,
+                    FALSE);
+        }
+
+        if ( GTK_WIDGET_VISIBLE (window) )
+        {
+            gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_unfullscreen_merge_id);
+            gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_fullscreen_merge_id);
+            /* Do not make the widget visible when in
+             * fullscreen mode.
+             */
+            if ( 0 == (gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_FULLSCREEN ))
+            {
+                gtk_ui_manager_add_ui (window->priv->ui_manager,
+                                       window->priv->toolbar_fullscreen_merge_id,
+                                       "/navigation-toolbar/placeholder-fullscreen",
+                                       "fullscreen",
+                                       "fullscreen",
+                                       GTK_UI_MANAGER_TOOLITEM,
+                                       FALSE);
+            }
+            else
+            {
+                gtk_ui_manager_add_ui (window->priv->ui_manager,
+                                       window->priv->toolbar_unfullscreen_merge_id,
+                                       "/navigation-toolbar/placeholder-fullscreen",
+                                       "unfullscreen",
+                                       "unfullscreen",
+                                       GTK_UI_MANAGER_TOOLITEM,
+                                       FALSE);
+            }
+        }
 
     }
 }
@@ -1517,7 +1777,7 @@ cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event,
                     g_source_remove (window->priv->show_fs_toolbar_timeout_id);
                     window->priv->show_fs_toolbar_timeout_id = 0;
                 }
-                window->priv->show_fs_toolbar_timeout_id = g_timeout_add (3000, (GSourceFunc)cb_rstto_main_window_show_fs_toolbar_timeout, window);
+                window->priv->show_fs_toolbar_timeout_id = g_timeout_add (1500, (GSourceFunc)cb_rstto_main_window_show_fs_toolbar_timeout, window);
             }
             else
             {
@@ -1529,50 +1789,93 @@ cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event,
                 gtk_widget_hide (window->priv->thumbnailbar);
             }
 
-            gtk_ui_manager_add_ui (window->priv->ui_manager,
-                                   window->priv->toolbar_unfullscreen_merge_id,
-                                   "/navigation-toolbar/placeholder-fullscreen",
-                                   "unfullscreen",
-                                   "unfullscreen",
-                                   GTK_UI_MANAGER_TOOLITEM,
-                                   FALSE);
-            gtk_ui_manager_remove_ui (window->priv->ui_manager,
-                                   window->priv->toolbar_fullscreen_merge_id);
+            if (rstto_settings_get_boolean_property (
+                    window->priv->settings_manager,
+                    "merge-toolbars"))
+            {
+                gtk_ui_manager_add_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_unfullscreen_merge_id,
+                        "/file-toolbar/placeholder-fullscreen",
+                        "unfullscreen",
+                        "unfullscreen",
+                        GTK_UI_MANAGER_TOOLITEM,
+                        FALSE);
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_fullscreen_merge_id);
+            }
+            else
+            {
+                gtk_ui_manager_add_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_unfullscreen_merge_id,
+                        "/navigation-toolbar/placeholder-fullscreen",
+                        "unfullscreen",
+                        "unfullscreen",
+                        GTK_UI_MANAGER_TOOLITEM,
+                        FALSE);
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_fullscreen_merge_id);
+            }
         }
         else
         {
-            gtk_ui_manager_add_ui (window->priv->ui_manager,
-                                   window->priv->toolbar_fullscreen_merge_id,
-                                   "/navigation-toolbar/placeholder-fullscreen",
-                                   "fullscreen",
-                                   "fullscreen",
-                                   GTK_UI_MANAGER_TOOLITEM,
-                                   FALSE);
-            gtk_ui_manager_remove_ui (window->priv->ui_manager,
-                                   window->priv->toolbar_unfullscreen_merge_id);
+            if (rstto_settings_get_boolean_property (
+                    window->priv->settings_manager,
+                    "merge-toolbars"))
+            {
+                gtk_ui_manager_add_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_fullscreen_merge_id,
+                        "/file-toolbar/placeholder-fullscreen",
+                        "fullscreen",
+                        "fullscreen",
+                        GTK_UI_MANAGER_TOOLITEM,
+                        FALSE);
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_unfullscreen_merge_id);
+
+                if (rstto_settings_get_boolean_property (RSTTO_SETTINGS (window->priv->settings_manager), "show-file-toolbar"))
+                    gtk_widget_show (window->priv->toolbar);
+                else
+                    gtk_widget_hide(window->priv->toolbar);
+            }
+            else
+            {
+                gtk_ui_manager_add_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_fullscreen_merge_id,
+                        "/navigation-toolbar/placeholder-fullscreen",
+                        "fullscreen",
+                        "fullscreen",
+                        GTK_UI_MANAGER_TOOLITEM,
+                        FALSE);
+                gtk_ui_manager_remove_ui (
+                        window->priv->ui_manager,
+                        window->priv->toolbar_unfullscreen_merge_id);
+
+                if (rstto_settings_get_boolean_property (RSTTO_SETTINGS (window->priv->settings_manager), "show-nav-toolbar"))
+                    gtk_widget_show (window->priv->image_list_toolbar);
+                else
+                    gtk_widget_hide(window->priv->image_list_toolbar);
+
+                if (rstto_settings_get_boolean_property (RSTTO_SETTINGS (window->priv->settings_manager), "show-file-toolbar"))
+                    gtk_widget_show (window->priv->toolbar);
+                else
+                    gtk_widget_hide(window->priv->toolbar);
+            }
             if (window->priv->show_fs_toolbar_timeout_id > 0)
             {
                 g_source_remove (window->priv->show_fs_toolbar_timeout_id);
                 window->priv->show_fs_toolbar_timeout_id = 0;
             }
-            gtk_widget_show (window->priv->image_list_toolbar);
+
             gtk_widget_show (window->priv->menubar);
             gtk_widget_show (window->priv->statusbar);
 
-            if (rstto_settings_get_boolean_property (RSTTO_SETTINGS (window->priv->settings_manager), "show-file-toolbar"))
-            {
-                if (FALSE == rstto_settings_get_boolean_property (RSTTO_SETTINGS
-(window->priv->settings_manager), "merge-toolbars"))
-                {
-                    gtk_widget_show (window->priv->toolbar);
-                }
-            }
-
-            if (rstto_settings_get_boolean_property (RSTTO_SETTINGS (window->priv->settings_manager), "show-nav-toolbar"))
-                gtk_widget_show (window->priv->image_list_toolbar);
-            else
-                gtk_widget_hide(window->priv->image_list_toolbar);
-
             if (rstto_settings_get_boolean_property (window->priv->settings_manager, "show-thumbnailbar"))
             {
                 gtk_widget_show (window->priv->thumbnailbar);
@@ -1597,7 +1900,14 @@ cb_rstto_main_window_motion_notify_event (RsttoMainWindow *window,
 
         if ((event->x_root == 0) || (event->y_root == 0) || (((gint)event->x_root) == (width-1)) || (((gint)event->y_root) == (height-1)))
         {
-            gtk_widget_show (window->priv->image_list_toolbar);
+            if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+            {
+                gtk_widget_show (gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar"));
+            }
+            else
+            {
+                gtk_widget_show (window->priv->image_list_toolbar);
+            }
             window->priv->fs_toolbar_sticky = TRUE;
 
             if (window->priv->show_fs_toolbar_timeout_id > 0)
@@ -1647,7 +1957,7 @@ cb_rstto_main_window_image_viewer_enter_notify_event (GtkWidget *widget,
             g_source_remove (window->priv->show_fs_toolbar_timeout_id);
             window->priv->show_fs_toolbar_timeout_id = 0;
         }
-        window->priv->show_fs_toolbar_timeout_id = g_timeout_add (2000, (GSourceFunc)cb_rstto_main_window_show_fs_toolbar_timeout, window);
+        window->priv->show_fs_toolbar_timeout_id = g_timeout_add (1500, (GSourceFunc)cb_rstto_main_window_show_fs_toolbar_timeout, window);
     }
 
     return TRUE;
@@ -1656,6 +1966,7 @@ cb_rstto_main_window_image_viewer_enter_notify_event (GtkWidget *widget,
 static gboolean
 cb_rstto_main_window_show_fs_toolbar_timeout (RsttoMainWindow *window)
 {
+    gtk_widget_hide (window->priv->toolbar);
     gtk_widget_hide (window->priv->image_list_toolbar);
     return FALSE;
 }
@@ -1697,15 +2008,34 @@ cb_rstto_main_window_play (GtkWidget *widget, RsttoMainWindow *window)
     gtk_ui_manager_remove_ui (window->priv->ui_manager,
                               window->priv->play_merge_id);
 
-    gtk_ui_manager_add_ui (window->priv->ui_manager,
-                           window->priv->toolbar_pause_merge_id,
-                           "/navigation-toolbar/placeholder-slideshow",
-                           "pause",
-                           "pause",
-                           GTK_UI_MANAGER_TOOLITEM,
-                           FALSE);
-    gtk_ui_manager_remove_ui (window->priv->ui_manager,
-                              window->priv->toolbar_play_merge_id);
+    if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_pause_merge_id,
+                "/file-toolbar/placeholder-slideshow",
+                "pause",
+                "pause",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+        gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_play_merge_id);
+    }
+    else
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_pause_merge_id,
+                "/navigation-toolbar/placeholder-slideshow",
+                "pause",
+                "pause",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+        gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_play_merge_id);
+    }
 
 
     g_value_init (&timeout, G_TYPE_UINT);
@@ -1736,15 +2066,34 @@ cb_rstto_main_window_pause (GtkWidget *widget, RsttoMainWindow *window)
     gtk_ui_manager_remove_ui (window->priv->ui_manager,
                               window->priv->pause_merge_id);
 
-    gtk_ui_manager_add_ui (window->priv->ui_manager,
-                           window->priv->toolbar_play_merge_id,
-                           "/navigation-toolbar/placeholder-slideshow",
-                           "play",
-                           "play",
-                           GTK_UI_MANAGER_TOOLITEM,
-                           FALSE);
-    gtk_ui_manager_remove_ui (window->priv->ui_manager,
-                              window->priv->toolbar_pause_merge_id);
+    if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars"))
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_play_merge_id,
+                "/file-toolbar/placeholder-slideshow",
+                "play",
+                "play",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+        gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_pause_merge_id);
+    }
+    else
+    {
+        gtk_ui_manager_add_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_play_merge_id,
+                "/navigation-toolbar/placeholder-slideshow",
+                "play",
+                "play",
+                GTK_UI_MANAGER_TOOLITEM,
+                FALSE);
+        gtk_ui_manager_remove_ui (
+                window->priv->ui_manager,
+                window->priv->toolbar_pause_merge_id);
+    }
 
     window->priv->playing = FALSE;
 }
diff --git a/src/main_window_ui.xml b/src/main_window_ui.xml
index 7e3af01..efa8821 100644
--- a/src/main_window_ui.xml
+++ b/src/main_window_ui.xml
@@ -112,23 +112,30 @@
         <toolitem action="save-copy"/>
         <toolitem action="close"/>
         <toolitem action="delete"/>
+        <separator name="separator-1"/>
+        <toolitem action="back"/>
+        <placeholder name="placeholder-slideshow" />
+        <toolitem action="forward"/>
+        <separator name="separator-2"/>
+        <toolitem action="rotate-ccw"/>
+        <toolitem action="rotate-cw"/>
         <separator />
+        <toolitem action="zoom-in"/>
+        <toolitem action="zoom-out"/>
+        <toolitem action="zoom-100"/>
+        <toolitem action="zoom-fit"/>
+        <separator />
+        <placeholder name="placeholder-fullscreen" />
     </toolbar>
 
     <!--
 
     -->
     <toolbar name="navigation-toolbar">
-        <toolitem action="open"/>
-        <separator />
-        <toolitem action="save-copy"/>
-        <toolitem action="close"/>
-        <toolitem action="delete"/>
-        <separator name="separator-1"/>
         <toolitem action="back"/>
         <placeholder name="placeholder-slideshow" />
         <toolitem action="forward"/>
-        <separator name="separator-2"/>
+        <separator name="separator-1"/>
         <toolitem action="rotate-ccw"/>
         <toolitem action="rotate-cw"/>
         <separator />


More information about the Xfce4-commits mailing list