X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/987da0d4116e93c1d326b29272c28ee9f989b87c..88594d02eb59a55ac85d3210a49d02918124617b:/src/os2/frame.cpp diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index ee36faa2b6..bc13037ef5 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -108,6 +108,7 @@ void wxFrame::Init() m_nFsStatusBarHeight = 0; m_nFsToolBarHeight = 0; m_bFsIsMaximized = FALSE; + m_bWasMinimized = FALSE; m_bFsIsShowing = FALSE; m_bIsShown = FALSE; m_pWinLastFocused = (wxWindow *)NULL; @@ -327,25 +328,23 @@ void wxFrame::DoSetClientSize( // and the client area; add this to the new client size to move the // window. Remember OS/2's backwards y coord system! // - int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth; - int nActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop + nHeight; + int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight; + int nActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop; #if wxUSE_STATUSBAR - if ( GetStatusBar() ) - { - int nStatusX; - int nStatusY; + wxStatusBar* pStatusBar = GetStatusBar(); - GetStatusBar()->GetClientSize( &nStatusX - ,&nStatusY - ); - nActualHeight += nStatusY; + if (pStatusBar && pStatusBar->IsShown()) + { + nActualHeight += pStatusBar->GetSize().y; } + #endif // wxUSE_STATUSBAR wxPoint vPoint(GetClientAreaOrigin()); - nActualWidth += vPoint.y; - nActualHeight += vPoint.x; + + nActualWidth += vPoint.x; + nActualHeight += vPoint.y; POINTL vPointl; @@ -412,9 +411,19 @@ bool wxFrame::Show( bool bShow ) { + int nShowCmd; SWP vSwp; - DoShowWindow((int)bShow); + if (bShow) + { + nShowCmd = SWP_SHOW; + } + else // hide + { + nShowCmd = SWP_HIDE; + } + + DoShowWindow(nShowCmd); if (bShow) { @@ -1320,10 +1329,30 @@ void wxFrame::IconizeChildFrames( pNode = pNode->GetNext() ) { wxWindow* pWin = pNode->GetData(); + wxFrame* pFrame = wxDynamicCast(pWin, wxFrame); - if (pWin->IsKindOf(CLASSINFO(wxFrame)) ) + if ( pFrame +#if wxUSE_MDI_ARCHITECTURE + && !wxDynamicCast(pFrame, wxMDIChildFrame) +#endif // wxUSE_MDI_ARCHITECTURE + ) { - ((wxFrame *)pWin)->Iconize(bIconize); + // + // We don't want to restore the child frames which had been + // iconized even before we were iconized, so save the child frame + // status when iconizing the parent frame and check it when + // restoring it. + // + if (bIconize) + { + pFrame->m_bWasMinimized = pFrame->IsIconized(); + } + + // + // This test works for both iconizing and restoring + // + if (!pFrame->m_bWasMinimized) + pFrame->Iconize(bIconize); } } } // end of wxFrame::IconizeChildFrames @@ -1407,7 +1436,40 @@ bool wxFrame::HandlePaint() } else { - return(wxWindow::HandlePaint()); + if (!wxWindow::HandlePaint()) + { + HPS hPS; + RECTL vRect; + + hPS = ::WinBeginPaint( GetHwnd() + ,NULLHANDLE + ,&vRect + ); + if(hPS) + { + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_CONSECRGB + ,0L + ,(LONG)wxTheColourDatabase->m_nSize + ,(PLONG)wxTheColourDatabase->m_palTable + ); + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_RGB + ,0L + ,0L + ,NULL + ); + + ::WinFillRect( hPS + ,&vRect + ,GetBackgroundColour().GetPixel() + ); + ::WinEndPaint(hPS); + } + } + return TRUE; } } else