[nautilus] window-pane: use the path-event signal from NautilusPathBar



commit cfa51e6702ade6a8ca9045791773e6e10560262f
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Sun Apr 29 17:39:47 2012 -0400

    window-pane: use the path-event signal from NautilusPathBar
    
    Simplifies code quite a bit.

 src/nautilus-window-pane.c |  121 +++++++------------------------------------
 1 files changed, 20 insertions(+), 101 deletions(-)
---
diff --git a/src/nautilus-window-pane.c b/src/nautilus-window-pane.c
index e2818d5..7b6ba81 100644
--- a/src/nautilus-window-pane.c
+++ b/src/nautilus-window-pane.c
@@ -312,58 +312,21 @@ path_bar_location_changed_callback (GtkWidget *widget,
 	}
 }
 
-static gboolean
-path_bar_button_pressed_callback (GtkWidget *widget,
-				  GdkEventButton *event,
-				  NautilusWindowPane *pane)
-{
-	NautilusWindowSlot *slot;
-	NautilusView *view;
-	GFile *location;
-	char *uri;
-
-	g_object_set_data (G_OBJECT (widget), "handle-button-release",
-			   GINT_TO_POINTER (TRUE));
-
-	if (event->button == 3) {
-		slot = nautilus_window_get_active_slot (pane->window);
-		view = slot->content_view;
-		if (view != NULL) {
-			location = nautilus_path_bar_get_path_for_button (
-				NAUTILUS_PATH_BAR (pane->path_bar), widget);
-			if (location != NULL) {
-				uri = g_file_get_uri (location);
-				nautilus_view_pop_up_location_context_menu (
-					view, event, uri);
-				g_object_unref (location);
-				g_free (uri);
-				return TRUE;
-			}
-		}
-	}
-
-	return FALSE;
-}
-
-static gboolean
-path_bar_button_released_callback (GtkWidget *widget,
-				   GdkEventButton *event,
-				   NautilusWindowPane *pane)
+static void
+path_bar_path_event_callback (NautilusPathBar *path_bar,
+			      GFile *location,
+			      GdkEventButton *event,
+			      NautilusWindowPane *pane)
 {
 	NautilusWindowSlot *slot;
 	NautilusWindowOpenFlags flags;
-	GFile *location;
 	int mask;
-	gboolean handle_button_release;
-
-	mask = event->state & gtk_accelerator_get_default_mod_mask ();
-	flags = 0;
-
-	handle_button_release = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget),
-						  "handle-button-release"));
+	NautilusView *view;
+	char *uri;
 
-	if (event->type == GDK_BUTTON_RELEASE && handle_button_release) {
-		location = nautilus_path_bar_get_path_for_button (NAUTILUS_PATH_BAR (pane->path_bar), widget);
+	if (event->type == GDK_BUTTON_RELEASE) {
+		mask = event->state & gtk_accelerator_get_default_mod_mask ();
+		flags = 0;
 
 		if (event->button == 2 && mask == 0) {
 			flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
@@ -374,23 +337,16 @@ path_bar_button_released_callback (GtkWidget *widget,
 		if (flags != 0) {
 			slot = nautilus_window_get_active_slot (pane->window);
 			nautilus_window_slot_open_location (slot, location, flags);
-			g_object_unref (location);
-			return TRUE;
 		}
-
-		g_object_unref (location);
+	} else if (event->button == 3) {
+		slot = nautilus_window_get_active_slot (pane->window);
+		view = slot->content_view;
+		if (view != NULL) {
+			uri = g_file_get_uri (location);
+			nautilus_view_pop_up_location_context_menu (view, event, uri);
+			g_free (uri);
+		}
 	}
-
-	return FALSE;
-}
-
-static void
-path_bar_button_drag_begin_callback (GtkWidget *widget,
-				     GdkEventButton *event,
-				     gpointer user_data)
-{
-	g_object_set_data (G_OBJECT (widget), "handle-button-release",
-			   GINT_TO_POINTER (FALSE));
 }
 
 static void
@@ -404,43 +360,6 @@ notebook_popup_menu_new_tab_cb (GtkMenuItem *menuitem,
 }
 
 static void
-path_bar_path_set_callback (GtkWidget *widget,
-			    GFile *location,
-			    NautilusWindowPane *pane)
-{
-	GList *children, *l;
-	GtkWidget *child;
-
-	children = gtk_container_get_children (GTK_CONTAINER (widget));
-
-	for (l = children; l != NULL; l = l->next) {
-		child = GTK_WIDGET (l->data);
-
-		if (!GTK_IS_TOGGLE_BUTTON (child)) {
-			continue;
-		}
-
-		if (!g_signal_handler_find (child,
-					    G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
-					    0, 0, NULL,
-					    path_bar_button_pressed_callback,
-					    pane)) {
-			g_signal_connect (child, "button-press-event",
-					  G_CALLBACK (path_bar_button_pressed_callback),
-					  pane);
-			g_signal_connect (child, "button-release-event",
-					  G_CALLBACK (path_bar_button_released_callback),
-					  pane);
-			g_signal_connect (child, "drag-begin",
-					  G_CALLBACK (path_bar_button_drag_begin_callback),
-					  pane);
-		}
-	}
-
-	g_list_free (children);
-}
-
-static void
 notebook_popup_menu_move_left_cb (GtkMenuItem *menuitem,
 				  gpointer user_data)
 {
@@ -762,8 +681,8 @@ nautilus_window_pane_constructed (GObject *obj)
 
 	g_signal_connect_object (pane->path_bar, "path-clicked",
 				 G_CALLBACK (path_bar_location_changed_callback), pane, 0);
-	g_signal_connect_object (pane->path_bar, "path-set",
-				 G_CALLBACK (path_bar_path_set_callback), pane, 0);
+	g_signal_connect_object (pane->path_bar, "path-event",
+				 G_CALLBACK (path_bar_path_event_callback), pane, 0);
 
 	/* connect to the location bar signals */
 	pane->location_bar = nautilus_toolbar_get_location_bar (NAUTILUS_TOOLBAR (pane->tool_bar));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]