From 4a46a5df879c4f820d0a0a435b34c7d5e4793991 Mon Sep 17 00:00:00 2001 From: David Webster Date: Mon, 11 Feb 2002 04:33:03 +0000 Subject: [PATCH] Updates for Y positioning git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14121 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/os2/gdiimage.cpp | 4 +- src/os2/icon.cpp | 2 +- src/os2/menuitem.cpp | 6 +-- src/os2/region.cpp | 2 +- src/os2/toplevel.cpp | 24 +---------- src/os2/window.cpp | 98 ++++++++++++++------------------------------ 6 files changed, 36 insertions(+), 100 deletions(-) diff --git a/src/os2/gdiimage.cpp b/src/os2/gdiimage.cpp index dcb5e1d4df..82ec08a00c 100644 --- a/src/os2/gdiimage.cpp +++ b/src/os2/gdiimage.cpp @@ -198,8 +198,8 @@ private: #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler) IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) - IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxGDIImageHandler) - IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxGDIImageHandler) + IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxObject) #endif // ---------------------------------------------------------------------------- diff --git a/src/os2/icon.cpp b/src/os2/icon.cpp index 4801c71d86..56b77d73ed 100644 --- a/src/os2/icon.cpp +++ b/src/os2/icon.cpp @@ -29,7 +29,7 @@ #include "wx/icon.h" - IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxIconBase) + IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxGDIObject) // ============================================================================ // implementation diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp index 42a3a893a5..761e549f2c 100644 --- a/src/os2/menuitem.cpp +++ b/src/os2/menuitem.cpp @@ -96,11 +96,7 @@ static wxString TextToLabel(const wxString& rTitle) // dynamic classes implementation // ---------------------------------------------------------------------------- - #if wxUSE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS2(wxMenuItem, wxMenuItemBase, wxOwnerDrawn) - #else //!USE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxMenuItemBase) - #endif //USE_OWNER_DRAWN +IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) // ---------------------------------------------------------------------------- // wxMenuItem diff --git a/src/os2/region.cpp b/src/os2/region.cpp index c742b392a4..5404bf64db 100644 --- a/src/os2/region.cpp +++ b/src/os2/region.cpp @@ -414,7 +414,7 @@ void wxRegion::GetBox( ,&vRect ); x = vRect.xLeft; - y = vRect.yTop; + y = vRect.yBottom; vWidth = vRect.xRight - vRect.xLeft; vHeight = vRect.yTop - vRect.yBottom; } diff --git a/src/os2/toplevel.cpp b/src/os2/toplevel.cpp index 55794c5bfe..a24707edd1 100644 --- a/src/os2/toplevel.cpp +++ b/src/os2/toplevel.cpp @@ -593,35 +593,13 @@ bool wxTopLevelWindowOS2::Show( m_bIconized = vSwp.fl & SWP_MINIMIZE; ::WinQueryWindowPos(m_hWnd, &m_vSwpClient); ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)~0, 0); + ::WinQueryWindowPos(m_hWnd, &vSwp); ::WinEnableWindow(m_hFrame, TRUE); // // Deal with children // MoveChildren(m_vSwpClient.cy - vSwp.cy); - - - // - // Need to handle the case of a single child that not a control - // as this is probably a panel with its own children - // - if (GetChildren().GetCount() > 0) - { - for (wxWindowList::Node* pNode = GetChildren().GetFirst(); - pNode; - pNode = pNode->GetNext()) - { - wxWindow* pChild = pNode->GetData(); - - if ( GetChildren().GetCount() == 1 && - !pChild->IsKindOf(CLASSINFO(wxControl)) - ) - pChild->MoveChildren(m_vSwpClient.cy - vSwp.cy); - pChild->Refresh(); - pChild = NULL; - } - } - vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); } diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 61e1e63601..c537067f89 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -303,8 +303,11 @@ void wxWindowOS2::Init() m_hWndScrollBarHorz = 0L; m_hWndScrollBarVert = 0L; + memset(&m_vWinSwp, '\0', sizeof (SWP)); + // // Pass WM_GETDLGCODE to DefWindowProc() + // m_lDlgCode = 0; m_nXThumbSize = 0; @@ -902,7 +905,6 @@ void wxWindowOS2::SetScrollbar( } else { - ::WinQueryWindowPos(hWnd, &vSwpOwner); // // The owner (the scrolled window) is a child of the Frame's // client window, usually. The scrollbars are children of the @@ -975,6 +977,7 @@ void wxWindowOS2::ScrollWindow( ,NULL ,SW_SCROLLCHILDREN | SW_INVALIDATERGN ); + Refresh(); } // end of wxWindowOS2::ScrollWindow // --------------------------------------------------------------------------- @@ -1598,8 +1601,8 @@ void wxWindowOS2::DoMoveWindow( // which will cause the scrollbars to be displayed via the SetScrollbar // call in CWindow. // - if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) || - pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) + if ( IsKindOf(CLASSINFO(wxGenericScrolledWindow)) || + IsKindOf(CLASSINFO(wxScrolledWindow)) ) { int nAdjustWidth = 0; @@ -3045,37 +3048,6 @@ bool wxWindowOS2::OS2Create( { sClassName += wxT("NR"); } - - // - // If the window being created is a Frame's Statusbar we need to use - // the actual Frame's size, not its client - // - if (pParent) - { - if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) || - pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) - ) - { - if (IsKindOf(CLASSINFO(wxStatusBar)) && - pParent->IsKindOf(CLASSINFO(wxFrame))) - { - RECTL vRect; - wxFrame* pFrame = wxDynamicCast(pParent, wxFrame); - - ::WinQueryWindowRect((HWND)pFrame->GetFrame(), &vRect); - nY = vRect.yTop - (nY + nHeight); - } - else - nY = pParent->GetSize().y - (nY + nHeight); - } - } - else - { - RECTL vRect; - - ::WinQueryWindowRect(HWND_DESKTOP, &vRect); - nY = vRect.yTop - (nY + nHeight); - } m_hWnd = (WXHWND)::WinCreateWindow( (HWND)hParent ,(PSZ)sClassName.c_str() ,(PSZ)zTitle ? zTitle : "" @@ -3098,6 +3070,22 @@ bool wxWindowOS2::OS2Create( } SubclassWin(m_hWnd); SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); + + m_backgroundColour.Set(wxString("GREY")); + + LONG lColor = (LONG)m_backgroundColour.GetPixel(); + + if (!::WinSetPresParam( m_hWnd + ,PP_BACKGROUNDCOLOR + ,sizeof(LONG) + ,(PVOID)&lColor + )) + { + vError = ::WinGetLastError(vHabmain); + sError = wxPMErrorToStr(vError); + wxLogError("Error creating frame. Error: %s\n", sError); + return FALSE; + } SetSize( nX ,nY ,nWidth @@ -4112,12 +4100,12 @@ void wxWindowOS2::MoveChildren( vSwp.x -= pCtrl->GetXComp(); } ::WinSetWindowPos( GetHwndOf(pWin) - ,HWND_BOTTOM + ,HWND_TOP ,vSwp.x ,vSwp.y - nDiff ,vSwp.cx ,vSwp.cy - ,SWP_MOVE | SWP_ZORDER + ,SWP_MOVE | SWP_SHOW | SWP_ZORDER ); ::WinQueryWindowPos(GetHwndOf(pWin), pWin->GetSwp()); if (pWin->IsKindOf(CLASSINFO(wxRadioBox))) @@ -4145,6 +4133,7 @@ void wxWindowOS2::MoveChildren( ); } } + Refresh(); } // end of wxWindowOS2::MoveChildren // @@ -4207,41 +4196,14 @@ int wxWindowOS2::GetOS2ParentHeight( return(pParent->GetClientSize().y); } // - // Case 3a -- One of many Frame children. Will be positioned normally - // - else if (pParent->GetChildren().GetCount() > 1) - return(pParent->GetClientSize().y); - // - // Case 3b -- this is for any window that is the sole child of a Frame. - // The grandparent must exist and it must be of type CFrame - // and it's height must be different. Otherwise the standard - // applies. + // Case -- this is for any window that is the sole child of a Frame. + // The grandparent must exist and it must be of type CFrame + // and it's height must be different. Otherwise the standard + // applies. // else { - pGrandParent = pParent->GetParent(); - if (pGrandParent && - pGrandParent->IsKindOf(CLASSINFO(wxFrame)) && - pGrandParent->GetClientSize().y != pParent->GetSize().y - ) - { - int nParentHeight = 0L; - int nStatusBarHeight = 0L; - wxFrame* pFrame = wxDynamicCast(pGrandParent, wxFrame); - wxStatusBar* pStatbar = pFrame->GetStatusBar(); - - nParentHeight = pGrandParent->GetClientSize().y; - if (pStatbar) - nStatusBarHeight = pStatbar->GetSize().y; - nParentHeight -= nStatusBarHeight; - return(nParentHeight); - } - else - // - // Panel is a child of some other kind of window so we'll - // just use it's original size - // - return(pParent->GetClientSize().y); + return(pParent->GetClientSize().y); } return(0L); } // end of wxWindowOS2::GetOS2ParentHeight -- 2.45.2