diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-06-18 23:23:30 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-06-18 23:23:30 +0000 |
commit | 1abf7df6be75d0f9a1c7277f46248eb87d46bf69 (patch) | |
tree | aa5703e4cbcfa0a2e464d45853df7f090b425d8e /gdk | |
parent | c597a7be39c3fb1f4d3caa6d1d21fedf413d6f51 (diff) | |
download | gtk+-1abf7df6be75d0f9a1c7277f46248eb87d46bf69.tar.gz |
Make the core pointer object per-display. (#85698)
Tue Jun 18 19:11:51 2002 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdisplay.[ch] gdk/gdkevents.c gdk/gdkinput.h
gdk/gdkinternals.h gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.[ch] gdk/x11/gdkevents-x11.c
gdk/x11/gdkinput{,-none,-x11}.c gdk/x11/gdkinputprivate.h:
Make the core pointer object per-display. (#85698)
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkdisplay.c | 28 | ||||
-rw-r--r-- | gdk/gdkdisplay.h | 4 | ||||
-rw-r--r-- | gdk/gdkevents.c | 6 | ||||
-rw-r--r-- | gdk/gdkinput.h | 2 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 2 | ||||
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 10 | ||||
-rw-r--r-- | gdk/win32/gdkinput-win32.c | 2 | ||||
-rw-r--r-- | gdk/win32/gdkinput-win32.h | 2 | ||||
-rw-r--r-- | gdk/win32/gdkinput.c | 20 | ||||
-rw-r--r-- | gdk/x11/gdkevents-x11.c | 8 | ||||
-rw-r--r-- | gdk/x11/gdkinput-none.c | 4 | ||||
-rw-r--r-- | gdk/x11/gdkinput-x11.c | 2 | ||||
-rw-r--r-- | gdk/x11/gdkinput.c | 22 | ||||
-rw-r--r-- | gdk/x11/gdkinputprivate.h | 4 |
14 files changed, 69 insertions, 47 deletions
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index f1c8691786..9a746d4978 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -323,3 +323,31 @@ gdk_event_send_clientmessage_toall (GdkEvent *event) gdk_screen_broadcast_client_message (gdk_get_default_screen (), event); } +/** + * gdk_device_get_core_pointer: + * + * Returns the core pointer device for the default display. + * + * Return value: the core pointer device; this is owned by the + * display and should not be freed. + **/ +GdkDevice * +gdk_device_get_core_pointer (void) +{ + return gdk_display_get_core_pointer (gdk_get_default_display ()); +} + +/** + * gdk_display_get_core_pointer: + * @display: a #GdkDisplay + * + * Returns the core pointer device for the given display + * + * Return value: the core pointer device; this is owned by the + * display and should not be freed. + **/ +GdkDevice * +gdk_display_get_core_pointer (GdkDisplay *display) +{ + return display->core_pointer; +} diff --git a/gdk/gdkdisplay.h b/gdk/gdkdisplay.h index 504b497c08..eb7265b16d 100644 --- a/gdk/gdkdisplay.h +++ b/gdk/gdkdisplay.h @@ -55,6 +55,8 @@ struct _GdkDisplay GdkWindow *button_window[2]; /* The last 2 windows to receive button presses. */ guint button_number[2]; /* The last 2 buttons to be pressed. */ + GdkDevice *core_pointer; /* Core pointer device */ + guint double_click_time; /* Maximum time between clicks in msecs */ }; @@ -107,6 +109,8 @@ void gdk_display_set_sm_client_id (GdkDisplay *display, void gdk_set_default_display (GdkDisplay *display); GdkDisplay *gdk_get_default_display (void); +GdkDevice *gdk_display_get_core_pointer (GdkDisplay *display); + G_END_DECLS #endif /* __GDK_DISPLAY_H__ */ diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 45e4237d13..856e27e5b2 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -1019,12 +1019,6 @@ gdk_event_get_type (void) return our_type; } -GdkDevice * -gdk_device_get_core_pointer (void) -{ - return _gdk_core_pointer; -} - /** * gdk_setting_get: * @name: the name of the setting. diff --git a/gdk/gdkinput.h b/gdk/gdkinput.h index a923a9c7c4..430a17b001 100644 --- a/gdk/gdkinput.h +++ b/gdk/gdkinput.h @@ -138,7 +138,9 @@ void gdk_input_set_extension_events (GdkWindow *window, gint mask, GdkExtensionMode mode); +#ifndef GDK_MULTIHEAD_SAFE GdkDevice *gdk_device_get_core_pointer (void); +#endif #ifdef __cplusplus } diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 80826b359e..a804882c5a 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -147,8 +147,6 @@ extern GdkEventFunc _gdk_event_func; /* Callback for events */ extern gpointer _gdk_event_data; extern GDestroyNotify _gdk_event_notify; -extern GdkDevice *_gdk_core_pointer; - extern GSList *_gdk_displays; extern gchar *_gdk_display_name; diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 7d0c939fb9..ee5d74041c 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2001,7 +2001,7 @@ gdk_event_translate (GdkDisplay *display, event->scroll.x_root = (gint16) LOWORD (msg->lParam); event->scroll.y_root = (gint16) HIWORD (msg->lParam); event->scroll.state = 0; /* No state information with MSH_MOUSEWHEEL */ - event->scroll.device = _gdk_core_pointer; + event->scroll.device = display->core_pointer; return_val = !GDK_WINDOW_DESTROYED (window); goto done; @@ -2520,7 +2520,7 @@ gdk_event_translate (GdkDisplay *display, event->button.axes = NULL; event->button.state = build_pointer_event_state (msg); event->button.button = button; - event->button.device = _gdk_core_pointer; + event->button.device = display->core_pointer; _gdk_event_button_generate (display, event); @@ -2577,7 +2577,7 @@ gdk_event_translate (GdkDisplay *display, event->button.axes = NULL; event->button.state = build_pointer_event_state (msg); event->button.button = button; - event->button.device = _gdk_core_pointer; + event->button.device = display->core_pointer; return_val = !GDK_WINDOW_DESTROYED (window); } @@ -2642,7 +2642,7 @@ gdk_event_translate (GdkDisplay *display, event->motion.axes = NULL; event->motion.state = build_pointer_event_state (msg); event->motion.is_hint = FALSE; - event->motion.device = _gdk_core_pointer; + event->motion.device = display->core_pointer; return_val = !GDK_WINDOW_DESTROYED (window); break; @@ -2736,7 +2736,7 @@ gdk_event_translate (GdkDisplay *display, event->scroll.x_root = (gint16) LOWORD (msg->lParam); event->scroll.y_root = (gint16) HIWORD (msg->lParam); event->scroll.state = build_pointer_event_state (msg); - event->scroll.device = _gdk_core_pointer; + event->scroll.device = display->core_pointer; return_val = !GDK_WINDOW_DESTROYED (window); break; diff --git a/gdk/win32/gdkinput-win32.c b/gdk/win32/gdkinput-win32.c index 0657449a6c..ce18b28eb3 100644 --- a/gdk/win32/gdkinput-win32.c +++ b/gdk/win32/gdkinput-win32.c @@ -1208,6 +1208,6 @@ _gdk_input_init (void) gdk_input_wintab_init (); #endif /* HAVE_WINTAB */ - _gdk_input_devices = g_list_append (_gdk_input_devices, _gdk_core_pointer); + _gdk_input_devices = g_list_append (_gdk_input_devices, display->core_pointer); } diff --git a/gdk/win32/gdkinput-win32.h b/gdk/win32/gdkinput-win32.h index cea2f1a5b8..ade066b00a 100644 --- a/gdk/win32/gdkinput-win32.h +++ b/gdk/win32/gdkinput-win32.h @@ -121,7 +121,7 @@ struct _GdkInputWindow /* Global data */ -#define GDK_IS_CORE(d) (((GdkDevice *)(d)) == _gdk_core_pointer) +#define GDK_IS_CORE(d) (((GdkDevice *)(d)) == gdk_get_default_display ()->core_pointer) extern GList *_gdk_input_devices; extern GList *_gdk_input_windows; diff --git a/gdk/win32/gdkinput.c b/gdk/win32/gdkinput.c index 110ef5c5f2..767ed2b9f5 100644 --- a/gdk/win32/gdkinput.c +++ b/gdk/win32/gdkinput.c @@ -54,8 +54,6 @@ static GdkDeviceAxis gdk_input_core_axes[] = { /* Global variables */ -GDKVAR GdkDevice *_gdk_core_pointer = NULL; - gint _gdk_input_ignore_core; GList *_gdk_input_devices; @@ -64,16 +62,16 @@ GList *_gdk_input_windows; void _gdk_init_input_core (void) { - _gdk_core_pointer = g_object_new (GDK_TYPE_DEVICE, NULL); + display->core_pointer = g_object_new (GDK_TYPE_DEVICE, NULL); - _gdk_core_pointer->name = "Core Pointer"; - _gdk_core_pointer->source = GDK_SOURCE_MOUSE; - _gdk_core_pointer->mode = GDK_MODE_SCREEN; - _gdk_core_pointer->has_cursor = TRUE; - _gdk_core_pointer->num_axes = 2; - _gdk_core_pointer->axes = gdk_input_core_axes; - _gdk_core_pointer->num_keys = 0; - _gdk_core_pointer->keys = NULL; + display->core_pointer->name = "Core Pointer"; + display->core_pointer->source = GDK_SOURCE_MOUSE; + display->core_pointer->mode = GDK_MODE_SCREEN; + display->core_pointer->has_cursor = TRUE; + display->core_pointer->num_axes = 2; + display->core_pointer->axes = gdk_input_core_axes; + display->core_pointer->num_keys = 0; + display->core_pointer->keys = NULL; } static void diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c index 8bbfcffd70..77312b167d 100644 --- a/gdk/x11/gdkevents-x11.c +++ b/gdk/x11/gdkevents-x11.c @@ -794,7 +794,7 @@ gdk_event_translate (GdkDisplay *display, event->scroll.x_root = (gfloat)xevent->xbutton.x_root; event->scroll.y_root = (gfloat)xevent->xbutton.y_root; event->scroll.state = (GdkModifierType) xevent->xbutton.state; - event->scroll.device = _gdk_core_pointer; + event->scroll.device = display->core_pointer; break; default: @@ -808,7 +808,7 @@ gdk_event_translate (GdkDisplay *display, event->button.axes = NULL; event->button.state = (GdkModifierType) xevent->xbutton.state; event->button.button = xevent->xbutton.button; - event->button.device = _gdk_core_pointer; + event->button.device = display->core_pointer; _gdk_event_button_generate (display, event); break; @@ -849,7 +849,7 @@ gdk_event_translate (GdkDisplay *display, event->button.axes = NULL; event->button.state = (GdkModifierType) xevent->xbutton.state; event->button.button = xevent->xbutton.button; - event->button.device = _gdk_core_pointer; + event->button.device = display->core_pointer; break; @@ -878,7 +878,7 @@ gdk_event_translate (GdkDisplay *display, event->motion.axes = NULL; event->motion.state = (GdkModifierType) xevent->xmotion.state; event->motion.is_hint = xevent->xmotion.is_hint; - event->motion.device = _gdk_core_pointer; + event->motion.device = display->core_pointer; break; diff --git a/gdk/x11/gdkinput-none.c b/gdk/x11/gdkinput-none.c index d63ef577b9..d5f0b34ec7 100644 --- a/gdk/x11/gdkinput-none.c +++ b/gdk/x11/gdkinput-none.c @@ -32,9 +32,9 @@ _gdk_input_init (GdkDisplay *display) { GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - _gdk_init_input_core (); + _gdk_init_input_core (display); - display_x11->input_devices = g_list_append (NULL, _gdk_core_pointer); + display_x11->input_devices = g_list_append (NULL, display->core_pointer); display_x11->input_ignore_core = FALSE; } diff --git a/gdk/x11/gdkinput-x11.c b/gdk/x11/gdkinput-x11.c index b1a72182d4..b54ff9d576 100644 --- a/gdk/x11/gdkinput-x11.c +++ b/gdk/x11/gdkinput-x11.c @@ -412,7 +412,7 @@ gdk_input_common_init (GdkDisplay *display, XFreeDeviceList(devices); } - display_x11->input_devices = g_list_append (display_x11->input_devices, _gdk_core_pointer); + display_x11->input_devices = g_list_append (display_x11->input_devices, display->core_pointer); return TRUE; } diff --git a/gdk/x11/gdkinput.c b/gdk/x11/gdkinput.c index 818d9409ed..c78df5fcd6 100644 --- a/gdk/x11/gdkinput.c +++ b/gdk/x11/gdkinput.c @@ -41,21 +41,19 @@ static GdkDeviceAxis gdk_input_core_axes[] = { { GDK_AXIS_Y, 0, 0 } }; -GdkDevice *_gdk_core_pointer = NULL; - void -_gdk_init_input_core (void) +_gdk_init_input_core (GdkDisplay *display) { - _gdk_core_pointer = g_object_new (GDK_TYPE_DEVICE, NULL); + display->core_pointer = g_object_new (GDK_TYPE_DEVICE, NULL); - _gdk_core_pointer->name = "Core Pointer"; - _gdk_core_pointer->source = GDK_SOURCE_MOUSE; - _gdk_core_pointer->mode = GDK_MODE_SCREEN; - _gdk_core_pointer->has_cursor = TRUE; - _gdk_core_pointer->num_axes = 2; - _gdk_core_pointer->axes = gdk_input_core_axes; - _gdk_core_pointer->num_keys = 0; - _gdk_core_pointer->keys = NULL; + display->core_pointer->name = "Core Pointer"; + display->core_pointer->source = GDK_SOURCE_MOUSE; + display->core_pointer->mode = GDK_MODE_SCREEN; + display->core_pointer->has_cursor = TRUE; + display->core_pointer->num_axes = 2; + display->core_pointer->axes = gdk_input_core_axes; + display->core_pointer->num_keys = 0; + display->core_pointer->keys = NULL; } GType diff --git a/gdk/x11/gdkinputprivate.h b/gdk/x11/gdkinputprivate.h index 8ed7a97f43..18f84e5ce2 100644 --- a/gdk/x11/gdkinputprivate.h +++ b/gdk/x11/gdkinputprivate.h @@ -126,7 +126,7 @@ struct _GdkInputWindow /* Global data */ -#define GDK_IS_CORE(d) (((GdkDevice *)(d)) == _gdk_core_pointer) +#define GDK_IS_CORE(d) (((GdkDevice *)(d)) == ((GdkDevicePrivate *)(d))->display->core_pointer) /* Function declarations */ @@ -134,7 +134,7 @@ GdkInputWindow *gdk_input_window_find (GdkWindow *window); void gdk_input_window_destroy (GdkWindow *window); GdkTimeCoord ** _gdk_device_allocate_history (GdkDevice *device, gint n_events); -void _gdk_init_input_core (void); +void _gdk_init_input_core (GdkDisplay *display); /* The following functions are provided by each implementation * (xfree, gxi, and none) |