Update gdk_window_quartz_show, ..._get_origin, ..._get_pointer

This commit is contained in:
Richard Hult
2009-06-20 11:17:15 +02:00
parent eb70b75118
commit f26fe5bb49

View File

@ -1023,9 +1023,11 @@ _gdk_windowing_window_destroy_foreign (GdkWindow *window)
/* Foreign windows aren't supported in OSX. */ /* Foreign windows aren't supported in OSX. */
} }
/* FIXME: This might be possible to simplify with client-side windows. */ /* FIXME: This might be possible to simplify with client-side windows. Also
* note that already_mapped is not used yet, see the x11 backend.
*/
static void static void
gdk_window_quartz_show (GdkWindow *window) gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped)
{ {
GdkWindowObject *private = (GdkWindowObject *)window; GdkWindowObject *private = (GdkWindowObject *)window;
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
@ -1656,9 +1658,11 @@ gdk_window_quartz_get_geometry (GdkWindow *window,
} }
static gint static gint
gdk_window_quartz_get_origin (GdkWindow *window, gdk_window_quartz_get_root_coords (GdkWindow *window,
gint *x, gint x,
gint *y) gint y,
gint *root_x,
gint *root_y)
{ {
GdkWindowObject *private; GdkWindowObject *private;
int tmp_x = 0, tmp_y = 0; int tmp_x = 0, tmp_y = 0;
@ -1668,20 +1672,20 @@ gdk_window_quartz_get_origin (GdkWindow *window,
if (GDK_WINDOW_DESTROYED (window)) if (GDK_WINDOW_DESTROYED (window))
{ {
if (x) if (root_x)
*x = 0; *root_x = 0;
if (y) if (root_y)
*y = 0; *root_y = 0;
return 0; return 0;
} }
if (window == _gdk_root) if (window == _gdk_root)
{ {
if (x) if (root_x)
*x = 0; *root_x = x;
if (y) if (root_y)
*y = 0; *root_y = y;
return 1; return 1;
} }
@ -1693,8 +1697,8 @@ gdk_window_quartz_get_origin (GdkWindow *window,
content_rect = [impl->toplevel contentRectForFrameRect:[impl->toplevel frame]]; content_rect = [impl->toplevel contentRectForFrameRect:[impl->toplevel frame]];
tmp_x = content_rect.origin.x; tmp_x = x + content_rect.origin.x;
tmp_y = _gdk_quartz_window_get_inverted_screen_y (content_rect.origin.y + content_rect.size.height); tmp_y = y + _gdk_quartz_window_get_inverted_screen_y (content_rect.origin.y + content_rect.size.height);
while (private != GDK_WINDOW_OBJECT (toplevel)) while (private != GDK_WINDOW_OBJECT (toplevel))
{ {
@ -1707,10 +1711,10 @@ gdk_window_quartz_get_origin (GdkWindow *window,
private = private->parent; private = private->parent;
} }
if (x) if (root_x)
*x = tmp_x; *root_x = tmp_x;
if (y) if (root_y)
*y = tmp_y; *root_y = tmp_y;
return TRUE; return TRUE;
} }
@ -1742,24 +1746,9 @@ gdk_window_get_root_origin (GdkWindow *window,
*y = rect.y; *y = rect.y;
} }
/* Returns coordinates relative to the root. */
void
_gdk_windowing_get_pointer (GdkDisplay *display,
GdkScreen **screen,
gint *x,
gint *y,
GdkModifierType *mask)
{
g_return_if_fail (display == _gdk_display);
*screen = _gdk_screen;
_gdk_windowing_window_get_pointer (_gdk_display, _gdk_root, x, y, mask);
}
/* Returns coordinates relative to the passed in window. */ /* Returns coordinates relative to the passed in window. */
GdkWindow * static GdkWindow *
_gdk_windowing_window_get_pointer (GdkDisplay *display, gdk_window_quartz_get_pointer_helper (GdkWindow *window,
GdkWindow *window,
gint *x, gint *x,
gint *y, gint *y,
GdkModifierType *mask) GdkModifierType *mask)
@ -1820,6 +1809,29 @@ _gdk_windowing_window_get_pointer (GdkDisplay *display,
return found_window; return found_window;
} }
static gboolean
gdk_window_quartz_get_pointer (GdkWindow *window,
gint *x,
gint *y,
GdkModifierType *mask)
{
return gdk_window_quartz_get_pointer_helper (window, x, y, mask) != NULL;
}
/* Returns coordinates relative to the root. */
void
_gdk_windowing_get_pointer (GdkDisplay *display,
GdkScreen **screen,
gint *x,
gint *y,
GdkModifierType *mask)
{
g_return_if_fail (display == _gdk_display);
*screen = _gdk_screen;
gdk_window_quartz_get_pointer_helper (_gdk_root, x, y, mask);
}
void void
gdk_display_warp_pointer (GdkDisplay *display, gdk_display_warp_pointer (GdkDisplay *display,
GdkScreen *screen, GdkScreen *screen,
@ -1840,8 +1852,7 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display,
gint x, y; gint x, y;
GdkModifierType tmp_mask = 0; GdkModifierType tmp_mask = 0;
found_window = _gdk_windowing_window_get_pointer (display, found_window = gdk_window_quartz_get_pointer_helper (_gdk_root,
_gdk_root,
&x, &y, &x, &y,
&tmp_mask); &tmp_mask);
if (found_window) if (found_window)
@ -2880,7 +2891,8 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
iface->reparent = gdk_window_quartz_reparent; iface->reparent = gdk_window_quartz_reparent;
iface->set_cursor = gdk_window_quartz_set_cursor; iface->set_cursor = gdk_window_quartz_set_cursor;
iface->get_geometry = gdk_window_quartz_get_geometry; iface->get_geometry = gdk_window_quartz_get_geometry;
iface->get_origin = gdk_window_quartz_get_origin; iface->get_root_coords = gdk_window_quartz_get_root_coords;
iface->get_pointer = gdk_window_quartz_get_pointer;
iface->get_deskrelative_origin = gdk_window_quartz_get_deskrelative_origin; iface->get_deskrelative_origin = gdk_window_quartz_get_deskrelative_origin;
iface->shape_combine_region = gdk_window_quartz_shape_combine_region; iface->shape_combine_region = gdk_window_quartz_shape_combine_region;
iface->input_shape_combine_region = gdk_window_quartz_input_shape_combine_region; iface->input_shape_combine_region = gdk_window_quartz_input_shape_combine_region;