nautilus r14427 - in trunk: . src
- From: cneumair svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r14427 - in trunk: . src
- Date: Wed, 30 Jul 2008 11:25:48 +0000 (UTC)
Author: cneumair
Date: Wed Jul 30 11:25:48 2008
New Revision: 14427
URL: http://svn.gnome.org/viewvc/nautilus?rev=14427&view=rev
Log:
2008-07-30 Christian Neumair <cneumair gnome org>
* src/nautilus-navigation-window.c
(path_bar_button_pressed_callback),
(path_bar_button_released_callback),
(path_bar_button_drag_begin_callback),
(path_bar_path_set_callback):
Open new window when control-clicking on a path bar button, open new
tab when middle-clicking on a path bar button. Fixes #545397.
Modified:
trunk/ChangeLog
trunk/src/nautilus-navigation-window.c
Modified: trunk/src/nautilus-navigation-window.c
==============================================================================
--- trunk/src/nautilus-navigation-window.c (original)
+++ trunk/src/nautilus-navigation-window.c Wed Jul 30 11:25:48 2008
@@ -1320,6 +1320,9 @@
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 (NAUTILUS_WINDOW (window));
view = slot->content_view;
@@ -1337,11 +1340,65 @@
}
}
+ return FALSE;
+}
+
+static gboolean
+path_bar_button_released_callback (GtkWidget *widget,
+ GdkEventButton *event,
+ NautilusNavigationWindow *window)
+{
+ 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"));
+
+ if (event->type == GDK_BUTTON_RELEASE && handle_button_release) {
+ location = nautilus_path_bar_get_path_for_button (NAUTILUS_PATH_BAR (window->path_bar), widget);
+
+ if (event->button == 2 && mask == 0) {
+ if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+ flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
+ } else {
+ flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;
+ }
+ } else if (event->button == 1 && mask == GDK_CONTROL_MASK) {
+ flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;
+ }
+
+ if (flags != 0) {
+ slot = nautilus_window_get_active_slot (NAUTILUS_WINDOW (window));
+ nautilus_window_slot_info_open_location (slot, location,
+ NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
+ flags, NULL);
+ g_object_unref (location);
+ return TRUE;
+ }
+
+ g_object_unref (location);
+ }
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
path_bar_path_set_callback (GtkWidget *widget,
GFile *location,
NautilusNavigationWindow *window)
@@ -1366,6 +1423,12 @@
g_signal_connect (child, "button-press-event",
G_CALLBACK (path_bar_button_pressed_callback),
window);
+ g_signal_connect (child, "button-release-event",
+ G_CALLBACK (path_bar_button_released_callback),
+ window);
+ g_signal_connect (child, "drag-begin",
+ G_CALLBACK (path_bar_button_drag_begin_callback),
+ window);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]