[gnome-builder] preferences: Global search should clear per page search
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] preferences: Global search should clear per page search
- Date: Tue, 12 May 2015 19:36:24 +0000 (UTC)
commit 16e719f00430cd5fc60cdc960b172713ff89899b
Author: Dimitris Zenios <dimitris zenios gmail com>
Date: Tue May 12 15:12:35 2015 +0300
preferences: Global search should clear per page search
src/preferences/gb-preferences-page-language.c | 12 +++++++++
src/preferences/gb-preferences-page.c | 9 +++++++
src/preferences/gb-preferences-page.h | 30 ++++++++++++++++--------
src/preferences/gb-preferences-window.c | 28 ++++++++++++++++++++++
4 files changed, 69 insertions(+), 10 deletions(-)
---
diff --git a/src/preferences/gb-preferences-page-language.c b/src/preferences/gb-preferences-page-language.c
index dc919ff..542bf03 100644
--- a/src/preferences/gb-preferences-page-language.c
+++ b/src/preferences/gb-preferences-page-language.c
@@ -191,6 +191,16 @@ back_button_clicked_cb (GbPreferencesPageLanguage *page,
}
static void
+gb_preferences_page_language_clear_search (GbPreferencesPage *self)
+{
+ GbPreferencesPageLanguage *page = (GbPreferencesPageLanguage *)self;
+
+ g_assert (GB_IS_PREFERENCES_PAGE_LANGUAGE (page));
+
+ gtk_entry_set_text (GTK_ENTRY (page->search_entry), "");
+}
+
+static void
gb_preferences_page_language_constructed (GObject *object)
{
GtkSourceLanguageManager *manager;
@@ -266,9 +276,11 @@ gb_preferences_page_language_class_init (GbPreferencesPageLanguageClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GbPreferencesPageClass *preferences_page_class = GB_PREFERENCES_PAGE_CLASS (klass);
object_class->constructed = gb_preferences_page_language_constructed;
object_class->finalize = gb_preferences_page_language_finalize;
+ preferences_page_class->clear_search = gb_preferences_page_language_clear_search;
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/builder/ui/gb-preferences-page-language.ui");
diff --git a/src/preferences/gb-preferences-page.c b/src/preferences/gb-preferences-page.c
index 47293e8..de3a416 100644
--- a/src/preferences/gb-preferences-page.c
+++ b/src/preferences/gb-preferences-page.c
@@ -185,6 +185,15 @@ gb_preferences_page_reset_title (GbPreferencesPage *page)
gb_preferences_page_set_title (page, priv->default_title);
}
+void
+gb_preferences_page_clear_search (GbPreferencesPage *page)
+{
+ g_return_if_fail (GB_IS_PREFERENCES_PAGE (page));
+
+ if (GB_PREFERENCES_PAGE_GET_CLASS (page)->clear_search)
+ return GB_PREFERENCES_PAGE_GET_CLASS (page)->clear_search (page);
+}
+
static const gchar *
gb_preferences_page_get_title (GbPreferencesPage *page)
{
diff --git a/src/preferences/gb-preferences-page.h b/src/preferences/gb-preferences-page.h
index 4994615..d838d36 100644
--- a/src/preferences/gb-preferences-page.h
+++ b/src/preferences/gb-preferences-page.h
@@ -30,18 +30,28 @@ G_DECLARE_DERIVABLE_TYPE (GbPreferencesPage, gb_preferences_page, GB, PREFERENCE
struct _GbPreferencesPageClass
{
GtkBinClass parent;
+
+ /**
+ * GbPreferencesPage::clear_search:
+ *
+ * Signal to let each preferences page clear
+ * its local search when a global search is
+ * about to be started
+ */
+ void (*clear_search) (GbPreferencesPage *self);
};
-guint gb_preferences_page_set_keywords (GbPreferencesPage *page,
- const gchar * const *keywords);
-void gb_preferences_page_set_keywords_for_widget (GbPreferencesPage *page,
- const gchar *keywords,
- gpointer first_widget,
- ...) G_GNUC_NULL_TERMINATED;
-void gb_preferences_page_set_title (GbPreferencesPage *page,
- const gchar *title);
-void gb_preferences_page_reset_title (GbPreferencesPage *page);
-GtkWidget *gb_preferences_page_get_controls (GbPreferencesPage *page);
+guint gb_preferences_page_set_keywords (GbPreferencesPage *page,
+ const gchar * const *keywords);
+void gb_preferences_page_set_keywords_for_widget (GbPreferencesPage *page,
+ const gchar *keywords,
+ gpointer first_widget,
+ ...) G_GNUC_NULL_TERMINATED;
+void gb_preferences_page_set_title (GbPreferencesPage *page,
+ const gchar *title);
+void gb_preferences_page_reset_title (GbPreferencesPage *page);
+GtkWidget *gb_preferences_page_get_controls (GbPreferencesPage *page);
+void gb_preferences_page_clear_search (GbPreferencesPage *page);
G_END_DECLS
diff --git a/src/preferences/gb-preferences-window.c b/src/preferences/gb-preferences-window.c
index dddef77..f71f512 100644
--- a/src/preferences/gb-preferences-window.c
+++ b/src/preferences/gb-preferences-window.c
@@ -116,6 +116,28 @@ gb_preferences_window_close (GbPreferencesWindow *self)
}
static void
+gb_preferences_window_search_bar_enable_changed (GbPreferencesWindow *self,
+ GParamSpec *pspec,
+ EggSearchBar *search_bar)
+{
+ g_return_if_fail (GB_IS_PREFERENCES_WINDOW (self));
+ g_return_if_fail (EGG_IS_SEARCH_BAR (search_bar));
+
+ if(egg_search_bar_get_search_mode_enabled (search_bar))
+ {
+ GList *pages;
+ GList *iter;
+
+ pages = gtk_container_get_children (GTK_CONTAINER (self->stack));
+
+ for (iter = pages; iter; iter = iter->next)
+ gb_preferences_page_clear_search (GB_PREFERENCES_PAGE (iter->data));
+
+ g_list_free (pages);
+ }
+}
+
+static void
gb_preferences_window_search_changed (GbPreferencesWindow *self,
GtkSearchEntry *entry)
{
@@ -195,6 +217,12 @@ gb_preferences_window_constructed (GObject *object)
G_CALLBACK (gb_preferences_window_search_changed),
self,
G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (self->search_bar,
+ "notify::search-mode-enabled",
+ G_CALLBACK (gb_preferences_window_search_bar_enable_changed),
+ self,
+ G_CONNECT_SWAPPED);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]