From 800eb565ae0d1feaba4c122afa85e28e351aa643 Mon Sep 17 00:00:00 2001 From: espectador Date: Thu, 7 Jun 2012 18:46:44 +0000 Subject: [PATCH] Fix bugs #36419 and #36586 git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@35183 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/GSWindowDecorationView.m | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4cbc54c34..644965569 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-06-07 German A. Arias + + * Source/GSWindowDecorationView.m (-changeWindowHeight:): Use an + intermediate frame before call -layout. This fix bugs #36419 and + #36586. + 2012-06-05 Wolfgang Lux * Tests/gui/TextSystem/deallocation.m: Add new test to verify diff --git a/Source/GSWindowDecorationView.m b/Source/GSWindowDecorationView.m index 4fd79efd9..b3a98561c 100644 --- a/Source/GSWindowDecorationView.m +++ b/Source/GSWindowDecorationView.m @@ -372,10 +372,20 @@ static inline NSRect RectWithSizeScaledByFactor(NSRect aRect, CGFloat factor) orgWindowFrame = [window frame]; windowFrame.origin.y = orgWindowFrame.origin.y + orgWindowFrame.size.height - windowFrame.size.height; windowFrame.origin.x = orgWindowFrame.origin.x; + /* FIXME: Make an intermediate frame to set in the window before call -layout. + * Later we will set a frame with the correct dimensions. This intermediate + * frame only differs on the width (subtract 1). This ensure the correct + * behaviour of the in-window menu. Even when I'm not sure why. + */ + windowFrame.size.width -= 1; - // then resize the window + // then resize the window with the intermediate frame and call -layout [window setFrame: windowFrame display: YES]; [self layout]; + + // Now resize the window to correct width + windowFrame.size.width += 1; + [window setFrame: windowFrame display: YES]; } /*