summaryrefslogtreecommitdiff
path: root/gdk/gdkevents.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-04-02 23:33:47 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-04-02 23:33:47 +0000
commitb52b326d5f34b09af70e9f277a43b48c5bf3be2d (patch)
tree2593b2dffad11ac442a89514a39988d75e53701d /gdk/gdkevents.c
parent0aef43bcbcb208d7419711ffd48dd7942d538952 (diff)
downloadgdk-pixbuf-b52b326d5f34b09af70e9f277a43b48c5bf3be2d.tar.gz
Add GdkEventSetting event for notification of changes to system settings,
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com> * gdk/gdkevents.h: Add GdkEventSetting event for notification of changes to system settings, gdk_setting_get() to retrieve a single system setting. * gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting to the draft XSETTINGS mechanism. * gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of XSETTINGS. * gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification of GDK settings changes to the GtkSettings object. * gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the double-click-timeout property to GDK. * gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]: Define GDK boxed types here. * gdk/Makefile.am gdk/makeenums.pl: Generate source files gdk/gdkenumtypes.[ch] for enum definitions. * gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_* * gtk/gtk-boxed.defs: Comment out GDK types * gtk/gtktypeutils.h: Remove GDK types * gtk/Makefile.am: No longer scan GDK headers for enumerataions
Diffstat (limited to 'gdk/gdkevents.c')
-rw-r--r--gdk/gdkevents.c44
1 files changed, 37 insertions, 7 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 92972578c..2f86c5aa1 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -30,11 +30,6 @@
typedef struct _GdkIOClosure GdkIOClosure;
typedef struct _GdkEventPrivate GdkEventPrivate;
-#define DOUBLE_CLICK_TIME 250
-#define TRIPLE_CLICK_TIME 500
-#define DOUBLE_CLICK_DIST 5
-#define TRIPLE_CLICK_DIST 5
-
typedef enum
{
/* Following flag is set for events on the event queue during
@@ -84,6 +79,11 @@ GDestroyNotify gdk_event_notify = NULL;
GPollFD event_poll_fd;
+static guint double_click_time = 250;
+#define TRIPLE_CLICK_TIME (2*double_click_time)
+#define DOUBLE_CLICK_DIST 5
+#define TRIPLE_CLICK_DIST 5
+
/*********************************************
* Functions for maintaining the event queue *
*********************************************/
@@ -326,7 +326,12 @@ gdk_event_copy (GdkEvent *event)
if (event->expose.region)
new_event->expose.region = gdk_region_copy (event->expose.region);
break;
- default:
+
+ case GDK_SETTING:
+ new_event->setting.name = g_strdup (new_event->setting.name);
+ break;
+
+ default:
break;
}
@@ -399,6 +404,10 @@ gdk_event_free (GdkEvent *event)
g_free (event->motion.axes);
break;
+ case GDK_SETTING:
+ g_free (event->setting.name);
+ break;
+
default:
break;
}
@@ -464,6 +473,7 @@ gdk_event_get_time (GdkEvent *event)
case GDK_MAP:
case GDK_UNMAP:
case GDK_WINDOW_STATE:
+ case GDK_SETTING:
/* return current time */
break;
}
@@ -540,6 +550,7 @@ gdk_event_get_state (GdkEvent *event,
case GDK_MAP:
case GDK_UNMAP:
case GDK_WINDOW_STATE:
+ case GDK_SETTING:
/* no state field */
break;
}
@@ -791,7 +802,7 @@ gdk_event_button_generate (GdkEvent *event)
button_number[1] = -1;
button_number[0] = -1;
}
- else if ((event->button.time < (button_click_time[0] + DOUBLE_CLICK_TIME)) &&
+ else if ((event->button.time < (button_click_time[0] + double_click_time)) &&
(event->button.window == button_window[0]) &&
(event->button.button == button_number[0]))
{
@@ -867,3 +878,22 @@ gdk_synthesize_window_state (GdkWindow *window,
}
}
+void
+gdk_set_double_click_time (guint msec)
+{
+ double_click_time = msec;
+}
+
+GType
+gdk_event_get_type (void)
+{
+ static GType our_type = 0;
+
+ if (our_type == 0)
+ our_type = g_boxed_type_register_static ("GdkEvent",
+ NULL,
+ (GBoxedCopyFunc)gdk_event_copy,
+ (GBoxedFreeFunc)gdk_event_free,
+ FALSE);
+ return our_type;
+}