Introduce MIDORI_TOUCHSCREEN and katze_widget_has_touchscreen_mode

This commit is contained in:
Christian Dywan 2009-10-28 20:38:09 +01:00
parent ee87663b35
commit 6a297dd4b3
5 changed files with 48 additions and 18 deletions

View file

@ -51,6 +51,12 @@ If you are interested in HTTP communication, try this:
Where '2' can be a level between 0 and 3. 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 For further information a tutorial for gdb and
reading up on how you can install debugging reading up on how you can install debugging
symbols for libraries used by Midori are recommended. symbols for libraries used by Midori are recommended.

View file

@ -16,6 +16,7 @@
#endif #endif
#include "katze-scrolled.h" #include "katze-scrolled.h"
#include "katze-utils.h"
#define DEFAULT_INTERVAL 50 #define DEFAULT_INTERVAL 50
#define DEFAULT_DECELERATION 0.7 #define DEFAULT_DECELERATION 0.7
@ -819,14 +820,13 @@ katze_scrolled_realize (GtkWidget* widget)
KatzeScrolled* scrolled = KATZE_SCROLLED (widget); KatzeScrolled* scrolled = KATZE_SCROLLED (widget);
KatzeScrolledPrivate* priv = scrolled->priv; KatzeScrolledPrivate* priv = scrolled->priv;
gboolean drag_scrolling; gboolean drag_scrolling;
GtkSettings* settings = gtk_widget_get_settings (widget);
GtkPolicyType policy; GtkPolicyType policy;
GdkWindowAttr attr; GdkWindowAttr attr;
GdkColor color; GdkColor color;
(*GTK_WIDGET_CLASS (katze_scrolled_parent_class)->realize) (widget); (*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; policy = drag_scrolling ? GTK_POLICY_NEVER : GTK_POLICY_AUTOMATIC;
g_object_set (scrolled, "drag-scrolling", drag_scrolling, g_object_set (scrolled, "drag-scrolling", drag_scrolling,
"hscrollbar-policy", policy, "vscrollbar-policy", policy, NULL); "hscrollbar-policy", policy, "vscrollbar-policy", policy, NULL);
@ -888,7 +888,6 @@ katze_scrolled_class_init (KatzeScrolledClass* class)
GtkWidgetClass* widget_class; GtkWidgetClass* widget_class;
GtkContainerClass* container_class; GtkContainerClass* container_class;
GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT; GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT;
GtkSettings* gtk_settings;
gobject_class = G_OBJECT_CLASS (class); gobject_class = G_OBJECT_CLASS (class);
widget_class = GTK_WIDGET_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 /* 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. */ should be a safe optimization to not setup events if not needed. */
if ((gtk_settings = gtk_settings_get_default ())) if (katze_widget_has_touchscreen_mode (NULL))
{ katze_scrolled_event_handler_append (katze_scrolled_event_handler, NULL);
gboolean touchscreen;
g_object_get (gtk_settings, "gtk-touchscreen-mode", &touchscreen, NULL);
if (touchscreen)
katze_scrolled_event_handler_append (katze_scrolled_event_handler, NULL);
}
g_type_class_add_private (class, sizeof (KatzeScrolledPrivate)); g_type_class_add_private (class, sizeof (KatzeScrolledPrivate));
} }

View file

@ -1110,3 +1110,36 @@ katze_mkdir_with_parents (const gchar* pathname,
return 0; 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;
}
}

View file

@ -144,6 +144,9 @@ int
katze_mkdir_with_parents (const gchar* pathname, katze_mkdir_with_parents (const gchar* pathname,
int mode); int mode);
gboolean
katze_widget_has_touchscreen_mode (GtkWidget* widget);
G_END_DECLS G_END_DECLS
#endif /* __KATZE_UTILS_H__ */ #endif /* __KATZE_UTILS_H__ */

View file

@ -257,9 +257,6 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
GtkWidget* header; GtkWidget* header;
GtkWindow* parent; GtkWindow* parent;
const gchar* icon_name; const gchar* icon_name;
#if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON
GtkSettings* gtk_settings;
#endif
KatzePreferences* _preferences; KatzePreferences* _preferences;
GtkWidget* label; GtkWidget* label;
GtkWidget* button; GtkWidget* button;
@ -281,10 +278,6 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
header, FALSE, FALSE, 0); header, FALSE, FALSE, 0);
gtk_widget_show_all (header); 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); _preferences = KATZE_PREFERENCES (preferences);
#define PAGE_NEW(__icon, __label) \ #define PAGE_NEW(__icon, __label) \
@ -383,7 +376,8 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
INDENTED_ADD (button); INDENTED_ADD (button);
#endif #endif
#if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON #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); button = katze_property_proxy (settings, "kinetic-scrolling", NULL);
else else
{ {