summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Steinbeiss <simon.steinbeiss@elfenbeinturm.at>2020-12-03 23:32:32 +0100
committerSimon Steinbeiß <ochosi@xfce.org>2020-12-07 22:27:46 +0100
commit1f7f40dbac89defb35dccefb3bc06db2a8a30eb2 (patch)
tree4ea13f5c34ccb6557ed9fc2e21625a25e1df3d38
parent1ad76a473549ef667be16c5a25c03081f9934142 (diff)
downloadxfce4-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.c40
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,