mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-30 11:07:38 +00:00
quartz: Factor out toplevel from NSEvent code into function
This commit is contained in:
parent
cca1621e71
commit
d0e5025694
@ -373,6 +373,31 @@ get_window_point_from_screen_point (GdkWindow *window,
|
|||||||
*y = private->height - point.y;
|
*y = private->height - point.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GdkWindow *
|
||||||
|
get_toplevel_from_ns_event (NSEvent *nsevent,
|
||||||
|
NSPoint *screen_point,
|
||||||
|
gint *x,
|
||||||
|
gint *y)
|
||||||
|
{
|
||||||
|
GdkQuartzView *view;
|
||||||
|
GdkWindow *toplevel;
|
||||||
|
GdkWindowObject *private;
|
||||||
|
NSPoint point;
|
||||||
|
|
||||||
|
view = (GdkQuartzView *)[[nsevent window] contentView];
|
||||||
|
|
||||||
|
toplevel = [view gdkWindow];
|
||||||
|
private = GDK_WINDOW_OBJECT (toplevel);
|
||||||
|
|
||||||
|
point = [nsevent locationInWindow];
|
||||||
|
*screen_point = [[nsevent window] convertBaseToScreen:point];
|
||||||
|
|
||||||
|
*x = point.x;
|
||||||
|
*y = private->height - point.y;
|
||||||
|
|
||||||
|
return toplevel;
|
||||||
|
}
|
||||||
|
|
||||||
static GdkEvent *
|
static GdkEvent *
|
||||||
create_focus_event (GdkWindow *window,
|
create_focus_event (GdkWindow *window,
|
||||||
gboolean in)
|
gboolean in)
|
||||||
@ -540,22 +565,12 @@ find_window_for_ns_event (NSEvent *nsevent,
|
|||||||
{
|
{
|
||||||
GdkQuartzView *view;
|
GdkQuartzView *view;
|
||||||
GdkWindow *toplevel;
|
GdkWindow *toplevel;
|
||||||
GdkWindowObject *private;
|
|
||||||
NSPoint point;
|
|
||||||
NSPoint screen_point;
|
NSPoint screen_point;
|
||||||
NSEventType event_type;
|
NSEventType event_type;
|
||||||
|
|
||||||
view = (GdkQuartzView *)[[nsevent window] contentView];
|
view = (GdkQuartzView *)[[nsevent window] contentView];
|
||||||
|
|
||||||
toplevel = [view gdkWindow];
|
toplevel = get_toplevel_from_ns_event (nsevent, &screen_point, x, y);
|
||||||
private = GDK_WINDOW_OBJECT (toplevel);
|
|
||||||
|
|
||||||
point = [nsevent locationInWindow];
|
|
||||||
screen_point = [[nsevent window] convertBaseToScreen:point];
|
|
||||||
|
|
||||||
*x = point.x;
|
|
||||||
*y = private->height - point.y;
|
|
||||||
|
|
||||||
_gdk_quartz_window_nspoint_to_gdk_xy (screen_point, x_root, y_root);
|
_gdk_quartz_window_nspoint_to_gdk_xy (screen_point, x_root, y_root);
|
||||||
|
|
||||||
event_type = [nsevent type];
|
event_type = [nsevent type];
|
||||||
|
Loading…
Reference in New Issue
Block a user