]> git.saurik.com Git - wxWidgets.git/commitdiff
Move children if parent gets resized.
authorStefan Neis <Stefan.Neis@t-online.de>
Sun, 10 Oct 2004 23:16:54 +0000 (23:16 +0000)
committerStefan Neis <Stefan.Neis@t-online.de>
Sun, 10 Oct 2004 23:16:54 +0000 (23:16 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/os2/window.cpp

index e104adeddf51891cc0af31f4e58dc75b57cad810..08b942a31243a61e5760f271edf828361d4670a5 100644 (file)
@@ -1472,6 +1472,16 @@ void wxWindowOS2::DoMoveWindow(
     RECTL                           vRect;
     wxWindow*                       pParent = GetParent();
 
+    /* Due to OS/2's inverted coordinate system, changing the height
+       of a window requires repositioning all it's children, e.g. if
+       you want a child of height 100 to be at the top left corner of
+       the parent you need to position the lower left corner of the
+       child at (0, (height of parent - 100)), so, obviously, if the
+       height of the parent changes, the child needs to be repositioned. */
+    int                         nHeightDelta;
+    GetSize(0, &nHeightDelta);
+    nHeightDelta = nHeight - nHeightDelta;
+
     if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
     {
         int                         nOS2Height = GetOS2ParentHeight(pParent);
@@ -1620,6 +1630,7 @@ void wxWindowOS2::DoMoveWindow(
         MoveChildren(nYDiff);
         ::WinQueryWindowPos(GetHwnd(), &m_vWinSwp);
     }
+    MoveChildren(nHeightDelta);
 } // end of wxWindowOS2::DoMoveWindow
 
 //