diff options
author | Carlos Soriano <csoriano@gnome.org> | 2015-09-24 11:26:59 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2015-10-15 19:18:54 +0200 |
commit | 9341f64c1948f89dd47167b20502ea9e608bb082 (patch) | |
tree | 1da753849b4644ac744e516c5b261fe463d7f772 | |
parent | f9b6c07c8a425ea9359111c49c2aadfaf452a844 (diff) | |
download | gtk+-9341f64c1948f89dd47167b20502ea9e608bb082.tar.gz |
gtkplacesview: add a clear button to address entry
So it allows a quick way to clear the entry.
https://bugzilla.gnome.org/show_bug.cgi?id=756568
-rw-r--r-- | gtk/gtkplacesview.c | 22 | ||||
-rw-r--r-- | gtk/ui/gtkplacesview.ui | 1 |
2 files changed, 21 insertions, 2 deletions
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index 82c755e719..2796c7a61b 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -1828,11 +1828,19 @@ on_address_entry_text_changed (GtkPlacesView *view) priv = gtk_places_view_get_instance_private (view); supported = FALSE; supported_protocols = g_vfs_get_supported_uri_schemes (g_vfs_get_default ()); + address = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->address_entry))); + if (strlen (address) > 0) + gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->address_entry), + GTK_ENTRY_ICON_SECONDARY, + "edit-clear-symbolic"); + else + gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->address_entry), + GTK_ENTRY_ICON_SECONDARY, + NULL); if (!supported_protocols) - return; + goto out; - address = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->address_entry))); scheme = g_uri_parse_scheme (address); if (!scheme) @@ -1847,6 +1855,15 @@ out: } static void +on_address_entry_clear_pressed (GtkPlacesView *view, + GtkEntryIconPosition icon_pos, + GdkEvent *event, + GtkEntry *entry) +{ + gtk_entry_set_text (entry, ""); +} + +static void on_recent_servers_listbox_row_activated (GtkPlacesView *view, GtkPlacesViewRow *row, GtkWidget *listbox) @@ -2220,6 +2237,7 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GtkPlacesView, stack); gtk_widget_class_bind_template_callback (widget_class, on_address_entry_text_changed); + gtk_widget_class_bind_template_callback (widget_class, on_address_entry_clear_pressed); gtk_widget_class_bind_template_callback (widget_class, on_connect_button_clicked); gtk_widget_class_bind_template_callback (widget_class, on_key_press_event); gtk_widget_class_bind_template_callback (widget_class, on_listbox_row_activated); diff --git a/gtk/ui/gtkplacesview.ui b/gtk/ui/gtkplacesview.ui index 697825528e..1a1b84c2a7 100644 --- a/gtk/ui/gtkplacesview.ui +++ b/gtk/ui/gtkplacesview.ui @@ -247,6 +247,7 @@ <property name="completion">address_entry_completion</property> <signal name="notify::text" handler="on_address_entry_text_changed" object="GtkPlacesView" swapped="yes"/> <signal name="activate" handler="on_connect_button_clicked" object="GtkPlacesView" swapped="yes"/> + <signal name="icon-press" handler="on_address_entry_clear_pressed" object="GtkPlacesView" swapped="yes"/> </object> </child> <child> |