Remove width/height from GdkWindowImplQuartz and use those in GdkWindowObject

This commit is contained in:
Richard Hult 2009-01-05 15:56:57 +01:00 committed by Alexander Larsson
parent 774cebae69
commit b1b358c820
4 changed files with 56 additions and 44 deletions

View File

@ -161,8 +161,8 @@
event->configure.window = g_object_ref (window);
event->configure.x = private->x;
event->configure.y = private->y;
event->configure.width = impl->width;
event->configure.height = impl->height;
event->configure.width = private->width;
event->configure.height = private->height;
_gdk_event_queue_append (gdk_display_get_default (), event);
}
@ -175,18 +175,18 @@
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
GdkEvent *event;
impl->width = content_rect.size.width;
impl->height = content_rect.size.height;
private->width = content_rect.size.width;
private->height = content_rect.size.height;
[[self contentView] setFrame:NSMakeRect (0, 0, impl->width, impl->height)];
[[self contentView] setFrame:NSMakeRect (0, 0, private->width, private->height)];
/* Synthesize a configure event */
event = gdk_event_new (GDK_CONFIGURE);
event->configure.window = g_object_ref (window);
event->configure.x = private->x;
event->configure.y = private->y;
event->configure.width = impl->width;
event->configure.height = impl->height;
event->configure.width = private->width;
event->configure.height = private->height;
_gdk_event_queue_append (gdk_display_get_default (), event);
}
@ -297,8 +297,8 @@
*/
content_rect =
NSMakeRect (private->x,
_gdk_quartz_window_get_inverted_screen_y (private->y) - impl->height,
impl->width, impl->height);
_gdk_quartz_window_get_inverted_screen_y (private->y) - private->height,
private->width, private->height);
frame_rect = [impl->toplevel frameRectForContentRect:content_rect];
[impl->toplevel setFrame:frame_rect display:NO];
@ -343,8 +343,8 @@
* to generate crossing events). We have to do this, probably a bug in
* quartz.
*/
content_rect = NSMakeRect (-500 - impl->width, -500 - impl->height,
impl->width, impl->height);
content_rect = NSMakeRect (-500 - private->width, -500 - private->height,
private->width, private->height);
frame_rect = [impl->toplevel frameRectForContentRect:content_rect];
[impl->toplevel setFrame:frame_rect display:NO];

View File

@ -639,6 +639,7 @@ create_crossing_event (GdkWindow *window,
NSWindow *nswindow;
GdkWindow *toplevel;
GdkWindowImplQuartz *impl;
GdkWindowObject *private;
NSPoint point;
nswindow = [nsevent window];
@ -647,9 +648,10 @@ create_crossing_event (GdkWindow *window,
toplevel = [(GdkQuartzView *)[nswindow contentView] gdkWindow];
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl);
private = GDK_WINDOW_OBJECT (toplevel);
x_tmp = point.x;
y_tmp = impl->height - point.y;
y_tmp = private->height - point.y;
get_converted_window_coordinates (toplevel,
x_tmp, y_tmp,
@ -1035,6 +1037,7 @@ find_mouse_window_for_ns_event (NSEvent *nsevent,
{
GdkWindow *event_toplevel;
GdkWindowImplQuartz *impl;
GdkWindowObject *private;
GdkWindow *mouse_toplevel;
GdkWindow *mouse_window;
NSPoint point;
@ -1042,10 +1045,11 @@ find_mouse_window_for_ns_event (NSEvent *nsevent,
event_toplevel = [(GdkQuartzView *)[[nsevent window] contentView] gdkWindow];
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (event_toplevel)->impl);
private = GDK_WINDOW_OBJECT (event_toplevel);
point = [nsevent locationInWindow];
x_tmp = point.x;
y_tmp = impl->height - point.y;
y_tmp = private->height - point.y;
mouse_toplevel = gdk_window_get_toplevel (current_mouse_window);
@ -1095,6 +1099,7 @@ _gdk_quartz_events_trigger_crossing_events (gboolean defer_to_mainloop)
GdkWindow *mouse_window;
GdkWindow *toplevel;
GdkWindowImplQuartz *impl;
GdkWindowObject *private;
guint flags = 0;
NSTimeInterval timestamp = 0;
NSEvent *current_event;
@ -1153,8 +1158,9 @@ _gdk_quartz_events_trigger_crossing_events (gboolean defer_to_mainloop)
timestamp = GetCurrentEventTime ();
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl);
private = GDK_WINDOW_OBJECT (impl);
nsevent = [NSEvent otherEventWithType:NSApplicationDefined
location:NSMakePoint (x_toplevel, impl->height - y_toplevel)
location:NSMakePoint (x_toplevel, private->height - y_toplevel)
modifierFlags:flags
timestamp:timestamp
windowNumber:[impl->toplevel windowNumber]
@ -1205,6 +1211,7 @@ synthesize_crossing_events_for_ns_event (NSEvent *nsevent)
{
GdkWindow *event_toplevel;
GdkWindowImplQuartz *impl;
GdkWindowObject *private;
NSPoint point;
/* This is the only case where we actually use the window from
@ -1213,11 +1220,12 @@ synthesize_crossing_events_for_ns_event (NSEvent *nsevent)
*/
event_toplevel = [(GdkQuartzView *)[[nsevent window] contentView] gdkWindow];
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (event_toplevel)->impl);
private = GDK_WINDOW_OBJECT (event_toplevel);
point = [nsevent locationInWindow];
x = point.x;
y = impl->height - point.y;
y = private->height - point.y;
mouse_window = _gdk_quartz_window_find_child (event_toplevel, x, y);
@ -1241,6 +1249,7 @@ synthesize_crossing_events_for_ns_event (NSEvent *nsevent)
{
GdkWindow *event_toplevel;
GdkWindowImplQuartz *impl;
GdkWindowObject *private;
NSPoint point;
/* We only use NSMouseExited when leaving to the root
@ -1253,10 +1262,11 @@ synthesize_crossing_events_for_ns_event (NSEvent *nsevent)
*/
event_toplevel = [(GdkQuartzView *)[[nsevent window] contentView] gdkWindow];
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (event_toplevel)->impl);
private = GDK_WINDOW_OBJECT (event_toplevel);
point = [nsevent locationInWindow];
x = point.x;
y = impl->height - point.y;
y = private->height - point.y;
x += GDK_WINDOW_OBJECT (event_toplevel)->x;
y += GDK_WINDOW_OBJECT (event_toplevel)->y;
@ -1362,7 +1372,7 @@ find_window_for_ns_event (NSEvent *nsevent,
point = [nsevent locationInWindow];
x_tmp = point.x;
y_tmp = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (grab_toplevel)->impl)->height - point.y;
y_tmp = GDK_WINDOW_OBJECT (grab_toplevel)->height - point.y;
/* Translate the coordinates so they are relative to
* the grab window instead of the event toplevel for

View File

@ -581,8 +581,8 @@ _gdk_quartz_window_debug_highlight (GdkWindow *window, gint number)
y += ty;
rect = NSMakeRect (x,
_gdk_quartz_window_get_inverted_screen_y (y + impl->height),
impl->width, impl->height);
_gdk_quartz_window_get_inverted_screen_y (y + private->height),
private->width, private->height);
if (debug_window[number] && NSEqualRects (rect, old_rect[number]))
return;
@ -704,7 +704,7 @@ find_child_window_helper (GdkWindow *window,
if (titlebar_height > 0 &&
x >= temp_x && y >= temp_y - titlebar_height &&
x < temp_x + child_impl->width && y < temp_y)
x < temp_x + child_private->width && y < temp_y)
{
/* The root means "unknown" i.e. a window not managed by
* GDK.
@ -714,7 +714,7 @@ find_child_window_helper (GdkWindow *window,
}
if (x >= temp_x && y >= temp_y &&
x < temp_x + child_impl->width && y < temp_y + child_impl->height)
x < temp_x + child_private->width && y < temp_y + child_private->height)
{
/* Look for child windows. */
return find_child_window_helper (l->data,
@ -738,7 +738,7 @@ _gdk_quartz_window_find_child (GdkWindow *window,
GdkWindowObject *private = GDK_WINDOW_OBJECT (window);
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
if (x >= 0 && y >= 0 && x < impl->width && y < impl->height)
if (x >= 0 && y >= 0 && x < private->width && y < private->height)
return find_child_window_helper (window, x, y, 0, 0);
return NULL;
@ -835,8 +835,8 @@ _gdk_window_new (GdkWindow *parent,
private->event_mask = attributes->event_mask;
impl->width = attributes->width > 1 ? attributes->width : 1;
impl->height = attributes->height > 1 ? attributes->height : 1;
private->width = attributes->width > 1 ? attributes->width : 1;
private->height = attributes->height > 1 ? attributes->height : 1;
if (attributes_mask & GDK_WA_VISUAL)
visual = attributes->visual;
@ -942,8 +942,8 @@ _gdk_window_new (GdkWindow *parent,
* MouseEntered event work if the window ends up right under
* the mouse pointer, bad quartz.
*/
content_rect = NSMakeRect (-500 - impl->width, -500 - impl->height,
impl->width, impl->height);
content_rect = NSMakeRect (-500 - private->width, -500 - private->height,
private->width, private->height);
if (attributes->window_type == GDK_WINDOW_TEMP ||
attributes->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)
@ -988,7 +988,7 @@ _gdk_window_new (GdkWindow *parent,
if (attributes->wclass == GDK_INPUT_OUTPUT)
{
NSRect frame_rect = NSMakeRect (private->x, private->y, impl->width, impl->height);
NSRect frame_rect = NSMakeRect (private->x, private->y, private->width, private->height);
impl->view = [[GdkQuartzView alloc] initWithFrame:frame_rect];
@ -1031,8 +1031,13 @@ _gdk_windowing_window_init (void)
/* Note: This needs to be reworked for multi-screen support. */
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl);
rect = [[NSScreen mainScreen] frame];
impl->width = rect.size.width;
impl->height = rect.size.height;
private->x = 0;
private->y = 0;
private->abs_x = 0;
private->abs_y = 0;
private->width = rect.size.width;
private->height = rect.size.height;
private->state = 0; /* We don't want GDK_WINDOW_STATE_WITHDRAWN here */
private->window_type = GDK_WINDOW_ROOT;
@ -1315,8 +1320,8 @@ move_resize_window_internal (GdkWindow *window,
if ((x == -1 || (x == private->x)) &&
(y == -1 || (y == private->y)) &&
(width == -1 || (width == impl->width)) &&
(height == -1 || (height == impl->height)))
(width == -1 || (width == private->width)) &&
(height == -1 || (height == private->height)))
{
return;
}
@ -1355,10 +1360,10 @@ move_resize_window_internal (GdkWindow *window,
}
if (width != -1)
impl->width = width;
private->width = width;
if (height != -1)
impl->height = height;
private->height = height;
GDK_QUARTZ_ALLOC_POOL;
@ -1374,8 +1379,8 @@ move_resize_window_internal (GdkWindow *window,
if (GDK_WINDOW_IS_MAPPED (window))
{
content_rect = NSMakeRect (private->x,
_gdk_quartz_window_get_inverted_screen_y (private->y + impl->height),
impl->width, impl->height);
_gdk_quartz_window_get_inverted_screen_y (private->y + private->height),
private->width, private->height);
frame_rect = [impl->toplevel frameRectForContentRect:content_rect];
[impl->toplevel setFrame:frame_rect display:YES];
@ -1387,7 +1392,7 @@ move_resize_window_internal (GdkWindow *window,
{
NSRect nsrect;
nsrect = NSMakeRect (private->x, private->y, impl->width, impl->height);
nsrect = NSMakeRect (private->x, private->y, private->width, private->height);
/* The newly visible area of this window in a coordinate
* system rooted at the origin of this window.
@ -1802,9 +1807,9 @@ gdk_window_quartz_get_geometry (GdkWindow *window,
*y = 0;
if (width)
*width = impl->width;
*width = private->width;
if (height)
*height = impl->height;
*height = private->height;
}
else if (WINDOW_IS_TOPLEVEL (window))
{
@ -1998,7 +2003,7 @@ _gdk_windowing_window_get_pointer (GdkDisplay *display,
point = [nswindow mouseLocationOutsideOfEventStream];
x_tmp = point.x;
y_tmp = impl->height - point.y;
y_tmp = private->height - point.y;
}
/* The coords are relative to the toplevel of the passed in window
@ -2934,8 +2939,8 @@ gdk_window_fullscreen (GdkWindow *window)
geometry->x = private->x;
geometry->y = private->y;
geometry->width = impl->width;
geometry->height = impl->height;
geometry->width = private->width;
geometry->height = private->height;
if (!gdk_window_get_decorations (window, &geometry->decor))
geometry->decor = GDK_DECOR_ALL;

View File

@ -45,9 +45,6 @@ struct _GdkWindowImplQuartz
{
GdkDrawableImplQuartz parent_instance;
gint width;
gint height;
NSWindow *toplevel;
NSTrackingRectTag tracking_rect;
GdkQuartzView *view;