forked from AuroraMiddleware/gtk
Update the position after showing the window since the window manager
2008-02-17 Richard Hult <richard@imendio.com> * gdk/quartz/GdkQuartzWindow.c: (showAndMakeKey): Update the position after showing the window since the window manager might not place it where we requested in the first places. svn path=/trunk/; revision=19605
This commit is contained in:
parent
8a37bb9364
commit
66fc6a5fb2
@ -1,3 +1,9 @@
|
||||
2008-02-17 Richard Hult <richard@imendio.com>
|
||||
|
||||
* gdk/quartz/GdkQuartzWindow.c: (showAndMakeKey): Update the
|
||||
position after showing the window since the window manager might
|
||||
not place it where we requested in the first places.
|
||||
|
||||
2008-02-17 Richard Hult <richard@imendio.com>
|
||||
|
||||
* gdk/quartz/gdkwindow-quartz.c: (show_window_internal),
|
||||
|
@ -270,14 +270,19 @@
|
||||
GdkWindow *window = [[self contentView] gdkWindow];
|
||||
GdkWindowObject *private = (GdkWindowObject *)window;
|
||||
GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
|
||||
gboolean was_hidden;
|
||||
int requested_x = 0, requested_y = 0;
|
||||
|
||||
inShowOrHide = YES;
|
||||
was_hidden = FALSE;
|
||||
|
||||
if (!GDK_WINDOW_IS_MAPPED (window))
|
||||
{
|
||||
NSRect content_rect;
|
||||
NSRect frame_rect;
|
||||
|
||||
was_hidden = TRUE;
|
||||
|
||||
/* We move the window in place if it's not mapped. See comment in
|
||||
* hide().
|
||||
*/
|
||||
@ -287,6 +292,9 @@
|
||||
impl->width, impl->height);
|
||||
frame_rect = [impl->toplevel frameRectForContentRect:content_rect];
|
||||
[impl->toplevel setFrame:frame_rect display:NO];
|
||||
|
||||
requested_x = frame_rect.origin.x;
|
||||
requested_y = frame_rect.origin.y;
|
||||
}
|
||||
|
||||
if (makeKey)
|
||||
@ -295,6 +303,20 @@
|
||||
[impl->toplevel orderFront:nil];
|
||||
|
||||
inShowOrHide = NO;
|
||||
|
||||
/* When the window manager didn't allow our request, update the position
|
||||
* to what it really ended up as.
|
||||
*/
|
||||
if (was_hidden)
|
||||
{
|
||||
NSRect frame_rect;
|
||||
|
||||
frame_rect = [impl->toplevel frame];
|
||||
if (requested_x != frame_rect.origin.x || requested_y != frame_rect.origin.y)
|
||||
{
|
||||
[self windowDidMove:nil];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)hide
|
||||
@ -422,6 +444,7 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GdkDragContext *current_context = NULL;
|
||||
|
||||
static GdkDragAction
|
||||
|
Loading…
Reference in New Issue
Block a user