diff options
author | Simon Steinbeiss <simon.steinbeiss@elfenbeinturm.at> | 2020-12-03 23:32:32 +0100 |
---|---|---|
committer | Simon Steinbeiß <ochosi@xfce.org> | 2020-12-07 22:27:46 +0100 |
commit | 1f7f40dbac89defb35dccefb3bc06db2a8a30eb2 (patch) | |
tree | 4ea13f5c34ccb6557ed9fc2e21625a25e1df3d38 | |
parent | 1ad76a473549ef667be16c5a25c03081f9934142 (diff) | |
download | xfce4-settings-1f7f40dbac89defb35dccefb3bc06db2a8a30eb2.tar.gz |
settings-manager: Put filter in separate bar (Fixes #226)
As the visibility of the filter bar is remembered this should not result
in a usability problem, because people who use this filter frequently
can keep it visible.
-rw-r--r-- | xfce4-settings-manager/xfce-settings-manager-dialog.c | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/xfce4-settings-manager/xfce-settings-manager-dialog.c b/xfce4-settings-manager/xfce-settings-manager-dialog.c index 7e61a403..57143971 100644 --- a/xfce4-settings-manager/xfce-settings-manager-dialog.c +++ b/xfce4-settings-manager/xfce-settings-manager-dialog.c @@ -118,6 +118,8 @@ static void xfce_settings_manager_dialog_set_title (XfceSettingsManage const gchar *icon_name, const gchar *subtitle); static void xfce_settings_manager_dialog_go_back (XfceSettingsManagerDialog *dialog); +static void xfce_settings_manager_show_filter_toggled (GtkToggleButton *button, + gpointer user_data); static void xfce_settings_manager_dialog_entry_changed (GtkWidget *entry, XfceSettingsManagerDialog *dialog); static gboolean xfce_settings_manager_dialog_entry_key_press (GtkWidget *entry, @@ -192,6 +194,8 @@ static void xfce_settings_manager_dialog_init (XfceSettingsManagerDialog *dialog) { GtkWidget *dialog_vbox; + GtkWidget *revealer; + GtkWidget *box; GtkWidget *entry; GtkWidget *scroll; GtkWidget *viewport; @@ -236,9 +240,24 @@ xfce_settings_manager_dialog_init (XfceSettingsManagerDialog *dialog) image = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_BUTTON); gtk_button_set_image (GTK_BUTTON (button), image); - /* Add the filter box to the Headerbar */ + /* Add the filter bar */ + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + revealer = gtk_revealer_new (); + gtk_revealer_set_transition_type (GTK_REVEALER (revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN); + gtk_widget_set_margin_top (box, 4); + gtk_container_add (GTK_CONTAINER (revealer), box); + gtk_widget_show (revealer); + + button = gtk_toggle_button_new (); + image = gtk_image_new_from_icon_name ("edit-find-symbolic", GTK_ICON_SIZE_BUTTON); + gtk_button_set_image (GTK_BUTTON (button), image); + gtk_header_bar_pack_end (GTK_HEADER_BAR (gtk_dialog_get_header_bar (GTK_DIALOG (dialog))), button); + gtk_widget_show (button); + g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (xfce_settings_manager_show_filter_toggled), revealer); + xfconf_g_property_bind (dialog->channel, "/last/filter-visible", G_TYPE_BOOLEAN, G_OBJECT (button), "active"); + dialog->filter_entry = entry = gtk_entry_new (); - gtk_header_bar_pack_end (GTK_HEADER_BAR (gtk_dialog_get_header_bar (GTK_DIALOG (dialog))), entry); + gtk_box_pack_start (GTK_BOX (box), entry, TRUE, FALSE, 0); gtk_widget_set_valign (entry, GTK_ALIGN_CENTER); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, "edit-find-symbolic"); gtk_entry_set_icon_activatable (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, FALSE); @@ -248,11 +267,13 @@ xfce_settings_manager_dialog_init (XfceSettingsManagerDialog *dialog) G_CALLBACK (xfce_settings_manager_dialog_entry_clear), NULL); g_signal_connect (G_OBJECT (entry), "key-press-event", G_CALLBACK (xfce_settings_manager_dialog_entry_key_press), dialog); - gtk_widget_show (entry); + gtk_widget_show_all (box); gtk_widget_grab_focus (dialog->filter_entry); dialog_vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + gtk_box_pack_start (GTK_BOX (dialog_vbox), revealer, FALSE, TRUE, 0); + dialog->category_scroll = scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); @@ -738,6 +759,19 @@ xfce_settings_manager_dialog_entry_changed (GtkWidget *entry, +static void +xfce_settings_manager_show_filter_toggled (GtkToggleButton *button, + gpointer user_data) +{ + GtkWidget *revealer = GTK_WIDGET (user_data); + gboolean state; + + state = gtk_toggle_button_get_active (button); + gtk_revealer_set_reveal_child (GTK_REVEALER (revealer), state); +} + + + static gboolean xfce_settings_manager_dialog_entry_key_press (GtkWidget *entry, GdkEventKey *event, |