diff options
author | Matthias Clasen <maclas@gmx.de> | 2003-12-16 00:56:48 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2003-12-16 00:56:48 +0000 |
commit | fbb0ba1a3b4fc044247a8597678f283b28bc6e91 (patch) | |
tree | 10455f458c533efed9dfbbf1dbdde7ec8766183a /gtk/gtksettings.c | |
parent | 69c2585f0d78c5c00b0dff296b28eddea964ed1f (diff) | |
download | gtk+-fbb0ba1a3b4fc044247a8597678f283b28bc6e91.tar.gz |
Do not interpret distant clicks as double-clicks (#116541, Bernhard
Tue Dec 16 01:46:46 2003 Matthias Clasen <maclas@gmx.de>
Do not interpret distant clicks as double-clicks (#116541,
Bernhard Walle):
* gdk/gdkdisplay.h (struct GdkDisplay): Add new fields
double_click_distance, button_x and button_y.
* gdk/gdkdisplay.c (gdk_display_init): Initialize the new fields.
* gdk/gdkdisplay.h:
* gdk/gdkevents.c (gdk_display_set_double_click_distance):
New function to set the double click distance on a display.
* gdk/gdkevents.c: Take double click distance into account
when generating single, double or triple clicks.
* gtk/gtksettings.c: Add new setting "gtk-double-click-distance".
* gdk/x11/gdkevents-x11.c: Add the XSetting
"Net/DoubleClickDistance" and map it to "gtk-double-click-distance".
Diffstat (limited to 'gtk/gtksettings.c')
-rw-r--r-- | gtk/gtksettings.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index bb058a7174..ec324c7520 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -45,6 +45,7 @@ struct _GtkSettingsPropertyValue enum { PROP_0, PROP_DOUBLE_CLICK_TIME, + PROP_DOUBLE_CLICK_DISTANCE, PROP_CURSOR_BLINK, PROP_CURSOR_BLINK_TIME, PROP_SPLIT_CURSOR, @@ -75,7 +76,7 @@ static void gtk_settings_notify (GObject *object, static guint settings_install_property_parser (GtkSettingsClass *class, GParamSpec *pspec, GtkRcPropertyParser parser); -static void settings_update_double_click_time (GtkSettings *settings); +static void settings_update_double_click (GtkSettings *settings); /* --- variables --- */ @@ -173,6 +174,14 @@ gtk_settings_class_init (GtkSettingsClass *class) NULL); g_assert (result == PROP_DOUBLE_CLICK_TIME); result = settings_install_property_parser (class, + g_param_spec_int ("gtk-double-click-distance", + _("Double Click Distance"), + _("Maximum distance allowed between two clicks for them to be considered a double click (in pixels)"), + 0, G_MAXINT, 5, + G_PARAM_READWRITE), + NULL); + g_assert (result == PROP_DOUBLE_CLICK_DISTANCE); + result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-cursor-blink", _("Cursor Blink"), _("Whether the cursor should blink"), @@ -299,7 +308,7 @@ gtk_settings_get_for_screen (GdkScreen *screen) settings->screen = screen; g_object_set_data (G_OBJECT (screen), "gtk-settings", settings); gtk_rc_reparse_all_for_settings (settings, TRUE); - settings_update_double_click_time (settings); + settings_update_double_click (settings); } return settings; @@ -420,7 +429,8 @@ gtk_settings_notify (GObject *object, switch (property_id) { case PROP_DOUBLE_CLICK_TIME: - settings_update_double_click_time (settings); + case PROP_DOUBLE_CLICK_DISTANCE: + settings_update_double_click (settings); break; } } @@ -1162,16 +1172,20 @@ _gtk_settings_reset_rc_values (GtkSettings *settings) } static void -settings_update_double_click_time (GtkSettings *settings) +settings_update_double_click (GtkSettings *settings) { if (gdk_screen_get_number (settings->screen) == 0) { GdkDisplay *display = gdk_screen_get_display (settings->screen); gint double_click_time; + gint double_click_distance; - g_object_get (settings, "gtk-double-click-time", - &double_click_time, NULL); + g_object_get (settings, + "gtk-double-click-time", &double_click_time, + "gtk-double-click-distance", &double_click_distance, + NULL); gdk_display_set_double_click_time (display, double_click_time); + gdk_display_set_double_click_distance (display, double_click_distance); } } |