[gnome-builder] prefs: extract type to search checks into utils



commit 4b98ebc73045b7c5aebdaeb8d5802863b01b4721
Author: Christian Hergert <christian hergert me>
Date:   Fri Apr 17 14:23:39 2015 -0700

    prefs: extract type to search checks into utils
    
    This will make it easier for us ot use this from other modules like
    the project selector.

 src/gnome-builder.mk                    |    2 +
 src/preferences/gb-preferences-window.c |   62 ++----------------------
 src/util/gb-gdk.c                       |   78 +++++++++++++++++++++++++++++++
 src/util/gb-gdk.h                       |   33 +++++++++++++
 4 files changed, 119 insertions(+), 56 deletions(-)
---
diff --git a/src/gnome-builder.mk b/src/gnome-builder.mk
index c337fe3..2391905 100644
--- a/src/gnome-builder.mk
+++ b/src/gnome-builder.mk
@@ -131,6 +131,8 @@ libgnome_builder_la_SOURCES = \
        src/util/gb-dnd.h \
        src/util/gb-file-manager.c \
        src/util/gb-file-manager.h \
+       src/util/gb-gdk.c \
+       src/util/gb-gdk.h \
        src/util/gb-glib.c \
        src/util/gb-glib.h \
        src/util/gb-gtk.c \
diff --git a/src/preferences/gb-preferences-window.c b/src/preferences/gb-preferences-window.c
index 6376261..44cb8ff 100644
--- a/src/preferences/gb-preferences-window.c
+++ b/src/preferences/gb-preferences-window.c
@@ -18,6 +18,7 @@
 
 #include <glib/gi18n.h>
 
+#include "gb-gdk.h"
 #include "gb-preferences-page-editor.h"
 #include "gb-preferences-page-experimental.h"
 #include "gb-preferences-page-git.h"
@@ -132,57 +133,6 @@ gb_preferences_window_search_changed (GbPreferencesWindow *self,
 }
 
 static gboolean
-is_escape_event (const GdkEventKey *event)
-{
-  return event->keyval == GDK_KEY_Escape;
-}
-
-static gboolean
-is_keynav_event (const GdkEventKey *event)
-{
-  switch (event->keyval)
-    {
-    case GDK_KEY_Escape:
-    case GDK_KEY_Up:
-    case GDK_KEY_KP_Up:
-    case GDK_KEY_Down:
-    case GDK_KEY_KP_Down:
-    case GDK_KEY_Left:
-    case GDK_KEY_KP_Left:
-    case GDK_KEY_Right:
-    case GDK_KEY_KP_Right:
-    case GDK_KEY_Home:
-    case GDK_KEY_KP_Home:
-    case GDK_KEY_End:
-    case GDK_KEY_KP_End:
-    case GDK_KEY_Page_Up:
-    case GDK_KEY_KP_Page_Up:
-    case GDK_KEY_Page_Down:
-    case GDK_KEY_KP_Page_Down:
-      return TRUE;
-    default:
-      break;
-    }
-
-  if ((event->state & GDK_MOD1_MASK) || (event->state & GDK_CONTROL_MASK))
-    return TRUE;
-
-  return FALSE;
-}
-
-static gboolean
-is_space_event (const GdkEventKey *event)
-{
-  return event->keyval == GDK_KEY_space;
-}
-
-static gboolean
-is_tab_event (const GdkEventKey *event)
-{
-  return (event->keyval == GDK_KEY_Tab) || (event->keyval == GDK_KEY_KP_Tab);
-}
-
-static gboolean
 gb_preferences_window_key_press_event (GtkWidget   *widget,
                                        GdkEventKey *event)
 {
@@ -206,13 +156,13 @@ gb_preferences_window_key_press_event (GtkWidget   *widget,
     {
       if (!gtk_search_bar_get_search_mode (self->search_bar))
         {
-          if (is_escape_event (event))
+          if (gb_gdk_event_key_is_escape (event))
             {
               g_signal_emit_by_name (widget, "close");
             }
-          else if (!is_keynav_event (event) &&
-                   !is_space_event (event) &&
-                   !is_tab_event (event))
+          else if (!gb_gdk_event_key_is_keynav (event) &&
+                   !gb_gdk_event_key_is_space (event) &&
+                   !gb_gdk_event_key_is_tab (event))
             {
               GtkWidget *current_page;
 
@@ -231,7 +181,7 @@ gb_preferences_window_key_press_event (GtkWidget   *widget,
       else
         {
           if (!gtk_widget_is_focus (GTK_WIDGET (self->search_bar)) &&
-              is_escape_event (event))
+              gb_gdk_event_key_is_escape (event))
             gtk_search_bar_set_search_mode (self->search_bar, FALSE);
 
           ret = TRUE;
diff --git a/src/util/gb-gdk.c b/src/util/gb-gdk.c
new file mode 100644
index 0000000..a950d81
--- /dev/null
+++ b/src/util/gb-gdk.c
@@ -0,0 +1,78 @@
+/* gb-gdk.c
+ *
+ * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gb-gdk.h"
+
+gboolean
+gb_gdk_event_key_is_escape (const GdkEventKey *event)
+{
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  return event->keyval == GDK_KEY_Escape;
+}
+
+gboolean
+gb_gdk_event_key_is_keynav (const GdkEventKey *event)
+{
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  switch (event->keyval)
+    {
+    case GDK_KEY_Escape:
+    case GDK_KEY_Up:
+    case GDK_KEY_KP_Up:
+    case GDK_KEY_Down:
+    case GDK_KEY_KP_Down:
+    case GDK_KEY_Left:
+    case GDK_KEY_KP_Left:
+    case GDK_KEY_Right:
+    case GDK_KEY_KP_Right:
+    case GDK_KEY_Home:
+    case GDK_KEY_KP_Home:
+    case GDK_KEY_End:
+    case GDK_KEY_KP_End:
+    case GDK_KEY_Page_Up:
+    case GDK_KEY_KP_Page_Up:
+    case GDK_KEY_Page_Down:
+    case GDK_KEY_KP_Page_Down:
+      return TRUE;
+    default:
+      break;
+    }
+
+  if ((event->state & GDK_MOD1_MASK) || (event->state & GDK_CONTROL_MASK))
+    return TRUE;
+
+  return FALSE;
+}
+
+gboolean
+gb_gdk_event_key_is_space (const GdkEventKey *event)
+{
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  return event->keyval == GDK_KEY_space;
+}
+
+gboolean
+gb_gdk_event_key_is_tab (const GdkEventKey *event)
+{
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  return (event->keyval == GDK_KEY_Tab) || (event->keyval == GDK_KEY_KP_Tab);
+}
diff --git a/src/util/gb-gdk.h b/src/util/gb-gdk.h
new file mode 100644
index 0000000..f3cf587
--- /dev/null
+++ b/src/util/gb-gdk.h
@@ -0,0 +1,33 @@
+/* gb-gdk.h
+ *
+ * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GB_GDK_H
+#define GB_GDK_H
+
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+gboolean gb_gdk_event_key_is_escape (const GdkEventKey *event);
+gboolean gb_gdk_event_key_is_keynav (const GdkEventKey *event);
+gboolean gb_gdk_event_key_is_space  (const GdkEventKey *event);
+gboolean gb_gdk_event_key_is_tab    (const GdkEventKey *event);
+
+G_END_DECLS
+
+#endif /* GB_GDK_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]