gtk+ r19621 - in branches/gtk-2-12: . gdk/quartz
- From: rhult svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r19621 - in branches/gtk-2-12: . gdk/quartz
- Date: Wed, 20 Feb 2008 19:33:37 +0000 (GMT)
Author: rhult
Date: Wed Feb 20 19:33:36 2008
New Revision: 19621
URL: http://svn.gnome.org/viewvc/gtk+?rev=19621&view=rev
Log:
2008-02-20 Richard Hult <richard imendio com>
Merged from trunk:
* 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 place.
Modified:
branches/gtk-2-12/ChangeLog
branches/gtk-2-12/gdk/quartz/GdkQuartzWindow.c
Modified: branches/gtk-2-12/gdk/quartz/GdkQuartzWindow.c
==============================================================================
--- branches/gtk-2-12/gdk/quartz/GdkQuartzWindow.c (original)
+++ branches/gtk-2-12/gdk/quartz/GdkQuartzWindow.c Wed Feb 20 19:33:36 2008
@@ -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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]