]> spindle.queued.net Git - midori/commitdiff
Introduce MIDORI_TOUCHSCREEN and katze_widget_has_touchscreen_mode
authorChristian Dywan <christian@twotoasts.de>
Wed, 28 Oct 2009 19:38:09 +0000 (20:38 +0100)
committerChristian Dywan <christian@twotoasts.de>
Wed, 28 Oct 2009 20:07:13 +0000 (21:07 +0100)
INSTALL
katze/katze-scrolled.c
katze/katze-utils.c
katze/katze-utils.h
midori/midori-preferences.c

diff --git a/INSTALL b/INSTALL
index 9eb4519c5ec6f6301c5e0f438ca9fc13178b8067..14d2129aff768f94a1c6269a9d9af652e3a04cf0 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -51,6 +51,12 @@ If you are interested in HTTP communication, try this:
 
 Where '2' can be a level between 0 and 3.
 
+If you are interested in (non-) touchscreen behaviour, try this:
+
+'MIDORI_TOUCHSCREEN=1 _build_/default/midori/midori', or
+
+'MIDORI_TOUCHSCREEN=0 _build_/default/midori/midori'
+
 For further information a tutorial for gdb and
 reading up on how you can install debugging
 symbols for libraries used by Midori are recommended.
index 49239250476f4814b9ed09d7d0be0701fa0d668b..e059551efc9b44bd398c612c8d2a3a642ed89c9f 100644 (file)
@@ -16,6 +16,7 @@
 #endif
 
 #include "katze-scrolled.h"
+#include "katze-utils.h"
 
 #define DEFAULT_INTERVAL 50
 #define DEFAULT_DECELERATION 0.7
@@ -819,14 +820,13 @@ katze_scrolled_realize (GtkWidget* widget)
     KatzeScrolled* scrolled = KATZE_SCROLLED (widget);
     KatzeScrolledPrivate* priv = scrolled->priv;
     gboolean drag_scrolling;
-    GtkSettings* settings = gtk_widget_get_settings (widget);
     GtkPolicyType policy;
     GdkWindowAttr attr;
     GdkColor color;
 
     (*GTK_WIDGET_CLASS (katze_scrolled_parent_class)->realize) (widget);
 
-    g_object_get (settings, "gtk-touchscreen-mode", &drag_scrolling, NULL);
+    drag_scrolling = katze_widget_has_touchscreen_mode (widget);
     policy = drag_scrolling ? GTK_POLICY_NEVER : GTK_POLICY_AUTOMATIC;
     g_object_set (scrolled, "drag-scrolling", drag_scrolling,
         "hscrollbar-policy", policy, "vscrollbar-policy", policy, NULL);
@@ -888,7 +888,6 @@ katze_scrolled_class_init (KatzeScrolledClass* class)
     GtkWidgetClass* widget_class;
     GtkContainerClass* container_class;
     GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT;
-    GtkSettings* gtk_settings;
 
     gobject_class = G_OBJECT_CLASS (class);
     widget_class = GTK_WIDGET_CLASS (class);
@@ -944,13 +943,8 @@ katze_scrolled_class_init (KatzeScrolledClass* class)
 
     /* Usually touchscreen mode is either always set or it isn't, so it
       should be a safe optimization to not setup events if not needed. */
-    if ((gtk_settings = gtk_settings_get_default ()))
-    {
-        gboolean touchscreen;
-        g_object_get (gtk_settings, "gtk-touchscreen-mode", &touchscreen, NULL);
-        if (touchscreen)
-            katze_scrolled_event_handler_append (katze_scrolled_event_handler, NULL);
-    }
+    if (katze_widget_has_touchscreen_mode (NULL))
+        katze_scrolled_event_handler_append (katze_scrolled_event_handler, NULL);
 
     g_type_class_add_private (class, sizeof (KatzeScrolledPrivate));
 }
index 76199595a58350cb2b935321aaac3ff5c56272f6..0a88dfdf993f74b6028d6f2d71eb2194b74d84a7 100644 (file)
@@ -1110,3 +1110,36 @@ katze_mkdir_with_parents (const gchar* pathname,
 
   return 0;
 }
+
+/**
+ * katze_widget_has_touchscreen_mode:
+ * @widget: a #GtkWidget, or %NULL
+ *
+ * Determines whether @widget should operate in touchscreen
+ * mode, as determined by GtkSettings or the environment
+ * variable MIDORI_TOUCHSCREEN.
+ *
+ * If @widget is %NULL, the default screen will be used.
+ *
+ * Returns: %TRUE if touchscreen mode should be used
+ *
+ * Since: 0.2.1
+ */
+gboolean
+katze_widget_has_touchscreen_mode (GtkWidget* widget)
+{
+    const gchar* touchscreen = g_getenv ("MIDORI_TOUCHSCREEN");
+    if (touchscreen && touchscreen[0] == '1')
+        return TRUE;
+    else if (touchscreen && touchscreen[0] == '0')
+        return FALSE;
+    else
+    {
+        GdkScreen* screen = widget && gtk_widget_has_screen (widget)
+            ? gtk_widget_get_screen (widget) : gdk_screen_get_default ();
+        GtkSettings* gtk_settings = gtk_settings_get_for_screen (screen);
+        gboolean enabled;
+        g_object_get (gtk_settings, "gtk-touchscreen-mode", &enabled, NULL);
+        return enabled;
+    }
+}
index 8e67520720c1e84ea8b9843c32ca3b03569d0e0a..3b226ee81b1046e44249bb2bc4ac8f48d457ae3d 100644 (file)
@@ -144,6 +144,9 @@ int
 katze_mkdir_with_parents             (const gchar* pathname,
                                       int          mode);
 
+gboolean
+katze_widget_has_touchscreen_mode    (GtkWidget*      widget);
+
 G_END_DECLS
 
 #endif /* __KATZE_UTILS_H__ */
index bbeed4c93bf93e8b3a4e68e42fb84fc1a016d159..0970a82e8505d2d8ad9152c3999ac3842a08a1be 100644 (file)
@@ -257,9 +257,6 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     GtkWidget* header;
     GtkWindow* parent;
     const gchar* icon_name;
-    #if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON
-    GtkSettings* gtk_settings;
-    #endif
     KatzePreferences* _preferences;
     GtkWidget* label;
     GtkWidget* button;
@@ -281,10 +278,6 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
             header, FALSE, FALSE, 0);
         gtk_widget_show_all (header);
     }
-    #if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON
-    gtk_settings = parent ?
-        gtk_widget_get_settings (GTK_WIDGET (parent)) : gtk_settings_get_default ();
-    #endif
     _preferences = KATZE_PREFERENCES (preferences);
 
     #define PAGE_NEW(__icon, __label) \
@@ -383,7 +376,8 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     INDENTED_ADD (button);
     #endif
     #if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON
-    if (katze_object_get_boolean (gtk_settings, "gtk-touchscreen-mode"))
+    if (katze_widget_has_touchscreen_mode (parent ?
+        GTK_WIDGET (parent) : GTK_WIDGET (preferences)))
         button = katze_property_proxy (settings, "kinetic-scrolling", NULL);
     else
     {