Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dliang
nautilus
nautilus-158279-add-location-toggle-button.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nautilus-158279-add-location-toggle-button.diff of Package nautilus
2006-05-15 Federico Mena Quintero <federico@novell.com> Fix https://bugzilla.novell.com/show_bug.cgi?id=158279 - add a button to the Nautilus location bar to toggle betwen the path bar and a location entry. * src/nautilus-window-private.h (NautilusNavigationWindowDetails): Add a location_button field. * src/nautilus-navigation-window.c (nautilus_navigation_window_instance_init): Create the location_button. (location_button_toggled_cb): New callback. Changes the preference for toggling between the path bar and the location bar. (always_use_location_entry_changed): Toggle the button as appropriate. --- nautilus/src/nautilus-window-private.h.orig 2006-05-15 14:08:02.000000000 -0500 +++ nautilus/src/nautilus-window-private.h 2006-05-15 14:19:16.000000000 -0500 @@ -106,6 +106,8 @@ struct _NautilusNavigationWindowDetails gboolean temporary_location_bar; gboolean temporary_search_bar; + GtkWidget *location_button; + /* Side Pane */ int side_pane_width; NautilusSidebar *current_side_panel; --- nautilus/src/nautilus-navigation-window.c.orig 2006-05-12 13:53:18.000000000 -0500 +++ nautilus/src/nautilus-navigation-window.c 2006-05-15 15:48:36.000000000 -0500 @@ -139,6 +139,44 @@ GNOME_CLASS_BOILERPLATE (NautilusNavigat NautilusWindow, NAUTILUS_TYPE_WINDOW) static void +location_button_toggled_cb (GtkToggleButton *toggle, + NautilusNavigationWindow *window) +{ + gboolean is_active; + + is_active = gtk_toggle_button_get_active (toggle); + eel_preferences_set_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY, is_active); + + if (is_active) + nautilus_navigation_bar_activate (NAUTILUS_NAVIGATION_BAR (window->navigation_bar)); +} + +static gboolean +location_button_should_be_active (NautilusNavigationWindow *window) +{ + return eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY); +} + +static GtkWidget * +location_button_create (NautilusNavigationWindow *window) +{ + GtkWidget *image; + GtkWidget *button; + + image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image); + + button = g_object_new (GTK_TYPE_TOGGLE_BUTTON, + "image", image, + "active", location_button_should_be_active (window), + NULL); + + g_signal_connect (button, "toggled", + G_CALLBACK (location_button_toggled_cb), window); + return button; +} + +static void nautilus_navigation_window_instance_init (NautilusNavigationWindow *window) { GtkUIManager *ui_manager; @@ -191,7 +229,7 @@ nautilus_navigation_window_instance_init location_bar = gtk_toolbar_new (); window->details->location_bar = location_bar; - hbox = gtk_hbox_new (FALSE, 0); + hbox = gtk_hbox_new (FALSE, 12); gtk_widget_show (hbox); item = gtk_tool_item_new (); @@ -202,6 +240,10 @@ nautilus_navigation_window_instance_init gtk_toolbar_insert (GTK_TOOLBAR (location_bar), item, -1); + window->details->location_button = location_button_create (window); + gtk_box_pack_start (GTK_BOX (hbox), window->details->location_button, FALSE, FALSE, 0); + gtk_widget_show (window->details->location_button); + window->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL); gtk_widget_show (window->path_bar); @@ -297,14 +339,25 @@ static void always_use_location_entry_changed (gpointer callback_data) { NautilusNavigationWindow *window; + gboolean use_entry; window = NAUTILUS_NAVIGATION_WINDOW (callback_data); - if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY)) { + use_entry = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY); + + if (use_entry) { nautilus_navigation_window_set_bar_mode (window, NAUTILUS_BAR_NAVIGATION); } else { nautilus_navigation_window_set_bar_mode (window, NAUTILUS_BAR_PATH); } + + g_signal_handlers_block_by_func (window->details->location_button, + G_CALLBACK (location_button_toggled_cb), + window); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (window->details->location_button), use_entry); + g_signal_handlers_unblock_by_func (window->details->location_button, + G_CALLBACK (location_button_toggled_cb), + window); } static int
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor