summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-06-18 23:23:30 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-06-18 23:23:30 +0000
commit1abf7df6be75d0f9a1c7277f46248eb87d46bf69 (patch)
treeaa5703e4cbcfa0a2e464d45853df7f090b425d8e /gdk
parentc597a7be39c3fb1f4d3caa6d1d21fedf413d6f51 (diff)
downloadgtk+-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.c28
-rw-r--r--gdk/gdkdisplay.h4
-rw-r--r--gdk/gdkevents.c6
-rw-r--r--gdk/gdkinput.h2
-rw-r--r--gdk/gdkinternals.h2
-rw-r--r--gdk/win32/gdkevents-win32.c10
-rw-r--r--gdk/win32/gdkinput-win32.c2
-rw-r--r--gdk/win32/gdkinput-win32.h2
-rw-r--r--gdk/win32/gdkinput.c20
-rw-r--r--gdk/x11/gdkevents-x11.c8
-rw-r--r--gdk/x11/gdkinput-none.c4
-rw-r--r--gdk/x11/gdkinput-x11.c2
-rw-r--r--gdk/x11/gdkinput.c22
-rw-r--r--gdk/x11/gdkinputprivate.h4
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)