diff options
Diffstat (limited to 'src/nautilus-toolbar.c')
-rw-r--r-- | src/nautilus-toolbar.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c index 4ecb5ff6a..53acc9ddc 100644 --- a/src/nautilus-toolbar.c +++ b/src/nautilus-toolbar.c @@ -114,6 +114,7 @@ struct _NautilusToolbar NautilusWindowSlot *window_slot; GBinding *icon_binding; GBinding *search_binding; + GBinding *tooltip_binding; }; enum @@ -1379,6 +1380,26 @@ nautilus_toolbar_view_toggle_icon_transform_to (GBinding *binding, return TRUE; } +static gboolean +nautilus_toolbar_view_toggle_tooltip_transform_to (GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data) +{ + const gchar *tooltip; + + tooltip = g_value_get_string (from_value); + + /* As per design decision, we let the previous used tooltip if no + * view menu is available */ + if (tooltip) + { + g_value_set_string (to_value, tooltip); + } + + return TRUE; +} + /* Called from on_window_slot_destroyed(), since bindings and signal handlers * are automatically removed once the slot goes away. */ @@ -1404,6 +1425,14 @@ nautilus_toolbar_set_window_slot_real (NautilusToolbar *self, self, NULL); + self->tooltip_binding = g_object_bind_property_full (self->window_slot, "tooltip", + self->view_toggle_button, "tooltip-text", + G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE, + (GBindingTransformFunc) nautilus_toolbar_view_toggle_tooltip_transform_to, + NULL, + self, + NULL); + self->search_binding = g_object_bind_property (self->window_slot, "searching", self, "searching", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); |