-(void)windowDidMove:(NSNotification *)aNotification
{
- NSRect content_rect = [self contentRectForFrameRect:[self frame]];
GdkWindow *window = [[self contentView] gdkWindow];
GdkWindowObject *private = (GdkWindowObject *)window;
GdkEvent *event;
- _gdk_quartz_window_xy_to_gdk_xy (content_rect.origin.x,
- content_rect.origin.y + content_rect.size.height,
- &private->x, &private->y);
+ _gdk_quartz_window_update_position (window);
/* Synthesize a configure event */
event = gdk_event_new (GDK_CONFIGURE);
#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindowObject *)win)->impl))
/* Initialization */
-void _gdk_windowing_update_root_window_size (GdkScreen *screen);
+void _gdk_windowing_update_window_sizes (GdkScreen *screen);
void _gdk_windowing_window_init (void);
void _gdk_events_init (void);
void _gdk_visual_init (void);
void _gdk_quartz_window_set_needs_display_in_rect (GdkWindow *window,
GdkRectangle *rect);
+void _gdk_quartz_window_update_position (GdkWindow *window);
+
/* Events */
typedef enum {
GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
}
void
-_gdk_windowing_update_root_window_size (GdkScreen *screen)
+_gdk_quartz_window_update_position (GdkWindow *window)
{
+ NSRect frame_rect;
+ NSRect content_rect;
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
+
+ GDK_QUARTZ_ALLOC_POOL;
+
+ frame_rect = [impl->toplevel frame];
+ content_rect = [impl->toplevel contentRectForFrameRect:frame_rect];
+
+ _gdk_quartz_window_xy_to_gdk_xy (content_rect.origin.x,
+ content_rect.origin.y + content_rect.size.height,
+ &private->x, &private->y);
+
+
+ GDK_QUARTZ_RELEASE_POOL;
+}
+
+void
+_gdk_windowing_update_window_sizes (GdkScreen *screen)
+{
+ GList *windows, *list;
GdkWindowObject *private = (GdkWindowObject *)_gdk_root;
/* The size of the root window is so that it can contain all
private->abs_y = 0;
private->width = gdk_screen_get_width (screen);
private->height = gdk_screen_get_height (screen);
+
+ windows = gdk_screen_get_toplevel_windows (screen);
+
+ for (list = windows; list; list = list->next)
+ _gdk_quartz_window_update_position (list->data);
+
+ g_list_free (windows);
}
void
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl);
- _gdk_windowing_update_root_window_size (_gdk_screen);
+ _gdk_windowing_update_window_sizes (_gdk_screen);
private->state = 0; /* We don't want GDK_WINDOW_STATE_WITHDRAWN here */
private->window_type = GDK_WINDOW_ROOT;