Updating branch refs/heads/master
         to dbea7584253be6b36b666c43b205df9011058df9 (commit)
       from 99af430d8acef55b295d1882888e832d783c6434 (commit)

commit dbea7584253be6b36b666c43b205df9011058df9
Author: Nick Schermer <n...@xfce.org>
Date:   Thu Dec 27 12:04:58 2012 +0100

    Implement tab middle click in location buttons (bug #9684).

 thunar/thunar-location-button.c  |   30 +++++++++++++++++++++++-------
 thunar/thunar-location-buttons.c |    9 +++++++++
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/thunar/thunar-location-button.c b/thunar/thunar-location-button.c
index 6769d9d..6c7180b 100644
--- a/thunar/thunar-location-button.c
+++ b/thunar/thunar-location-button.c
@@ -35,6 +35,7 @@
 #include <thunar/thunar-icon-factory.h>
 #include <thunar/thunar-location-button.h>
 #include <thunar/thunar-pango-extensions.h>
+#include <thunar/thunar-preferences.h>
 #include <thunar/thunar-private.h>
 
 
@@ -217,8 +218,9 @@ thunar_location_button_class_init 
(ThunarLocationButtonClass *klass)
                   G_TYPE_FROM_CLASS (klass),
                   G_SIGNAL_RUN_LAST,
                   0, NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
+                  g_cclosure_marshal_VOID__BOOLEAN,
+                  G_TYPE_NONE, 1,
+                  G_TYPE_BOOLEAN);
 
   /**
    * ThunarLocationButton::context-menu:
@@ -573,6 +575,8 @@ thunar_location_button_button_release_event (GtkWidget      
      *button,
                                              ThunarLocationButton 
*location_button)
 {
   ThunarApplication *application;
+  ThunarPreferences *preferences;
+  gboolean           open_in_tab;
 
   _thunar_return_val_if_fail (THUNAR_IS_LOCATION_BUTTON (location_button), 
FALSE);
 
@@ -585,10 +589,22 @@ thunar_location_button_button_release_event (GtkWidget    
        *button,
       /* verify that we still have a valid file */
       if (G_LIKELY (location_button->file != NULL))
         {
-          /* open a new window for the folder */
-          application = thunar_application_get ();
-          thunar_application_open_window (application, location_button->file, 
gtk_widget_get_screen (GTK_WIDGET (location_button)), NULL);
-          g_object_unref (G_OBJECT (application));
+          preferences = thunar_preferences_get ();
+          g_object_get (preferences, "misc-middle-click-in-tab", &open_in_tab, 
NULL);
+          g_object_unref (preferences);
+
+          if (open_in_tab)
+            {
+              /* open in tab */
+              g_signal_emit (G_OBJECT (location_button), 
location_button_signals[CLICKED], 0, TRUE);
+            }
+          else
+            {
+              /* open a new window for the folder */
+              application = thunar_application_get ();
+              thunar_application_open_window (application, 
location_button->file, gtk_widget_get_screen (GTK_WIDGET (location_button)), 
NULL);
+              g_object_unref (G_OBJECT (application));
+            }
         }
     }
 
@@ -990,7 +1006,7 @@ void
 thunar_location_button_clicked (ThunarLocationButton *location_button)
 {
   _thunar_return_if_fail (THUNAR_IS_LOCATION_BUTTON (location_button));
-  g_signal_emit (G_OBJECT (location_button), location_button_signals[CLICKED], 
0);
+  g_signal_emit (G_OBJECT (location_button), location_button_signals[CLICKED], 
0, FALSE);
 }
 
 
diff --git a/thunar/thunar-location-buttons.c b/thunar/thunar-location-buttons.c
index 902b598..62325e8 100644
--- a/thunar/thunar-location-buttons.c
+++ b/thunar/thunar-location-buttons.c
@@ -108,6 +108,7 @@ static void           thunar_location_buttons_scroll_left   
            (GtkWidg
 static void           thunar_location_buttons_scroll_right              
(GtkWidget                  *button,
                                                                          
ThunarLocationButtons      *buttons);
 static void           thunar_location_buttons_clicked                   
(ThunarLocationButton       *button,
+                                                                         
gboolean                    open_in_tab,
                                                                          
ThunarLocationButtons      *buttons);
 static void           thunar_location_buttons_context_menu              
(ThunarLocationButton       *button,
                                                                          
GdkEventButton             *event,
@@ -1114,6 +1115,7 @@ thunar_location_buttons_scroll_right (GtkWidget           
  *button,
 
 static void
 thunar_location_buttons_clicked (ThunarLocationButton  *button,
+                                 gboolean               open_in_tab,
                                  ThunarLocationButtons *buttons)
 {
   ThunarFile *directory;
@@ -1125,6 +1127,13 @@ thunar_location_buttons_clicked (ThunarLocationButton  
*button,
   /* determine the directory associated with the clicked button */
   directory = thunar_location_button_get_file (button);
 
+  /* open in tab */
+  if (open_in_tab)
+    {
+      thunar_navigator_open_new_tab (THUNAR_NAVIGATOR (buttons), directory);
+      return;
+    }
+
   /* disconnect from previous current directory (if any) */
   if (G_LIKELY (buttons->current_directory != NULL))
     g_object_unref (G_OBJECT (buttons->current_directory));
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to