X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a3bf7524f394af039efe196a186f7969cbabcc19..a0af0d98b5bb65da9f6b64a90dc3cfb642ee188e:/src/os2/window.cpp diff --git a/src/os2/window.cpp b/src/os2/window.cpp index d638bce330..ea20d2de24 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -294,17 +294,11 @@ bool wxWindowOS2::OS2Command( void wxWindowOS2::Init() { - // - // Generic - // - InitBase(); - // // PM specific // m_bWinCaptured = FALSE; - m_isBeingDeleted = FALSE; m_fnOldWndProc = NULL; m_bUseCtl3D = FALSE; m_bMouseInWindow = FALSE; @@ -362,9 +356,6 @@ wxWindowOS2::~wxWindowOS2() DestroyChildren(); - if (m_parent) - m_parent->RemoveChild(this); - if (m_hWnd) { if(!::WinDestroyWindow(GetHWND())) @@ -418,8 +409,6 @@ bool wxWindowOS2::Create( if (pParent) { - int nTempy; - pParent->AddChild(this); hParent = GetWinHwnd(pParent); @@ -758,7 +747,6 @@ void wxWindowOS2::SetScrollbar( ULONG ulStyle = WS_VISIBLE | WS_SYNCPAINT; SWP vSwp; SWP vSwpOwner; - RECTL vRect; HWND hWndParent; HWND hWndClient; wxWindow* pParent = GetParent(); @@ -950,9 +938,6 @@ void wxWindowOS2::ScrollWindow( ) { RECTL vRect; - RECTL vRectHorz; - RECTL vRectVert; - RECTL vRectChild; if (pRect) { @@ -1132,81 +1117,6 @@ WXDWORD wxWindowOS2::MakeExtendedStyle( return dwStyle; } // end of wxWindowOS2::MakeExtendedStyle -// -// Determines whether simulated 3D effects or CTL3D should be used, -// applying a default border style if required, and returning an extended -// style to pass to OS2Create. -// -WXDWORD wxWindowOS2::Determine3DEffects( - WXDWORD dwDefaultBorderStyle -, bool* pbWant3D -) const -{ - WXDWORD dwStyle = 0L; - - // - // Native PM does not have any specialize 3D effects like WIN32 does, - // so we have to try and invent them. - // - - // - // If matches certain criteria, then assume no 3D effects - // unless specifically requested (dealt with in MakeExtendedStyle) - // - if (!GetParent() || - !IsKindOf(CLASSINFO(wxControl)) || - (m_windowStyle & wxNO_BORDER) - ) - { - *pbWant3D = FALSE; - return MakeExtendedStyle(m_windowStyle, FALSE); - } - - // - // 1) App can specify global 3D effects - // - *pbWant3D = wxTheApp->GetAuto3D(); - - // - // 2) If the parent is being drawn with user colours, or simple border - // specified, switch effects off. - // - if (GetParent() && - (GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS) || - (m_windowStyle & wxSIMPLE_BORDER) - ) - *pbWant3D = FALSE; - - // - // 3) Control can override this global setting by defining - // a border style, e.g. wxSUNKEN_BORDER - // - if ((m_windowStyle & wxDOUBLE_BORDER) || - (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSTATIC_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) - ) - *pbWant3D = TRUE; - - dwStyle = MakeExtendedStyle( m_windowStyle - ,FALSE - ); - - // - // If we want 3D, but haven't specified a border here, - // apply the default border style specified. - // - if (dwDefaultBorderStyle && (*pbWant3D) && - !((m_windowStyle & wxDOUBLE_BORDER) || - (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSTATIC_BORDER) || - (m_windowStyle & wxSIMPLE_BORDER) - ) - ) - dwStyle |= dwDefaultBorderStyle; - return dwStyle; -} // end of wxWindowOS2::Determine3DEffects - // // Setup background and foreground colours correctly // @@ -1242,10 +1152,10 @@ void wxWindowOS2::OnIdle( // int nState = 0; - if (::WinGetKeyState(HWND_DESKTOP, VK_SHIFT) != 0) - nState |= VK_SHIFT; - if (::WinGetKeyState(HWND_DESKTOP, VK_CTRL) != 0); - nState |= VK_CTRL; + if (IsShiftDown()) + nState |= KC_SHIFT; + if (IsCtrlDown()) + nState |= KC_CTRL; wxMouseEvent rEvent(wxEVT_LEAVE_WINDOW); @@ -1313,9 +1223,9 @@ void wxWindowOS2::Refresh( RECTL vOs2Rect; vOs2Rect.xLeft = pRect->x; - vOs2Rect.yTop = pRect->y; + vOs2Rect.yBottom = pRect->y; vOs2Rect.xRight = pRect->x + pRect->width; - vOs2Rect.yBottom = pRect->y + pRect->height; + vOs2Rect.yTop = pRect->y + pRect->height; ::WinInvalidateRect(hWnd, &vOs2Rect, bEraseBack); } @@ -1561,7 +1471,6 @@ void wxWindowOS2::DoMoveWindow( ) { RECTL vRect; - HWND hParent; wxWindow* pParent = GetParent(); if (pParent && !IsKindOf(CLASSINFO(wxDialog))) @@ -1597,7 +1506,6 @@ void wxWindowOS2::DoMoveWindow( int nHeightFrameDelta = 0; int nHeightFrame = 0; int nWidthFrame = 0; - ULONG ulFLag = SWP_MOVE; wxFrame* pFrame; pFrame = wxDynamicCast(this, wxFrame); @@ -1752,7 +1660,6 @@ void wxWindowOS2::DoSetSize( // Must convert Y coords to test for equality under OS/2 // int nY2 = nY; - wxWindow* pParent = (wxWindow*)GetParent(); if (nX == nCurrentX && nY2 == nCurrentY && nWidth == nCurrentWidth && nHeight == nCurrentHeight) @@ -1927,9 +1834,8 @@ void wxWindowOS2::GetTextExtent( int i; int l; FONTMETRICS vFM; // metrics structure - BOOL bRc; + BOOL bRc = FALSE; char* pStr; - ERRORID vErrorCode; // last error id code HPS hPS; @@ -2035,25 +1941,6 @@ bool wxWindowOS2::IsMouseInWindow() const // popup menu // --------------------------------------------------------------------------- // -#if wxUSE_MENUS_NATIVE -static void wxYieldForCommandsOnly() -{ - // - // Peek all WM_COMMANDs (it will always return WM_QUIT too but we don't - // want to process it here) - // - QMSG vMsg; - - while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND, WM_COMMAND, PM_REMOVE) - && vMsg.msg != WM_QUIT) - { - wxTheApp->DoMessage((WXMSG*)&vMsg); - } - if (vMsg.msg == WM_QUIT) - ::WinPostMsg(NULL, WM_QUIT, 0, 0); -} -#endif // wxUSE_MENUS_NATIVE - #if wxUSE_MENUS_NATIVE bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu @@ -2086,7 +1973,6 @@ bool wxWindowOS2::DoPopupMenu( while(bIsWaiting) { QMSG vMsg; - BOOL bRc = ::WinGetMsg(vHabmain, &vMsg, HWND(NULL), 0, 0); if (vMsg.msg == WM_MENUEND || vMsg.msg == WM_COMMAND) { @@ -2402,14 +2288,6 @@ MRESULT EXPENTRY wxWndProc( , MPARAM lParam ) { - // - // Trace all ulMsgs - useful for the debugging - // -#ifdef __WXDEBUG__ - wxLogTrace(wxTraceMessages, wxT("Processing %s(wParam=%8lx, lParam=%8lx)"), - wxGetMessageName(ulMsg), wParam, lParam); -#endif // __WXDEBUG__ - wxWindowOS2* pWnd = wxFindWinFromHandle((WXHWND)hWnd); // @@ -2631,7 +2509,7 @@ MRESULT wxWindowOS2::OS2WindowProc( bProcessed = HandleMouseEvent( uMsg ,nX ,nY - ,(WXUINT)SHORT1FROMMP(wParam) + ,(WXUINT)SHORT2FROMMP(lParam) ); } else @@ -2648,7 +2526,7 @@ MRESULT wxWindowOS2::OS2WindowProc( bProcessed = pWin->HandleMouseEvent( uMsg ,nX ,nY - ,(WXUINT)SHORT1FROMMP(wParam) + ,(WXUINT)SHORT2FROMMP(lParam) ); } } @@ -3090,36 +2968,6 @@ MRESULT wxWindowOS2::OS2WindowProc( return mResult; } // end of wxWindowOS2::OS2WindowProc -#ifndef __EMX__ -// clashes with wxDlgProc in toplevel.cpp? -// -// Dialog window proc -// -MRESULT wxDlgProc( - HWND WXUNUSED(hWnd) -, UINT uMsg -, MPARAM WXUNUSED(wParam) -, MPARAM WXUNUSED(lParam)) -{ - if (uMsg == WM_INITDLG) - { - // - // For this message, returning TRUE tells system to set focus to the - // first control in the dialog box - // - return (MRESULT)TRUE; - } - else - { - // - // For all the other ones, FALSE means that we didn't process the - // message - // - return (MRESULT)0; - } -} // end of wxDlgProc -#endif - wxWindow* wxFindWinFromHandle( WXHWND hWnd ) @@ -3128,7 +2976,7 @@ wxWindow* wxFindWinFromHandle( if (!pNode) return NULL; - return (wxWindow *)pNode->Data(); + return (wxWindow *)pNode->GetData(); } // end of wxFindWinFromHandle void wxAssociateWinWithHandle( @@ -3235,9 +3083,6 @@ bool wxWindowOS2::OS2Create( int nY = 0L; int nWidth = 0L; int nHeight = 0L; - wxWindow* pParent = GetParent(); - HWND hWnd = NULLHANDLE; - HWND hParent; long lControlId = 0L; wxWindowCreationHook vHook(this); wxString sClassName((wxChar*)zClass); @@ -3263,7 +3108,7 @@ bool wxWindowOS2::OS2Create( // which is the same but without CS_[HV]REDRAW class styles so using it // ensures that the window is not fully repainted on each resize // - if (GetWindowStyleFlag() & wxNO_FULL_REPAINT_ON_RESIZE) + if (!HasFlag(wxFULL_REPAINT_ON_RESIZE)) { sClassName += wxT("NR"); } @@ -3302,7 +3147,7 @@ bool wxWindowOS2::OS2Create( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error creating frame. Error: %s\n", sError); + wxLogError("Error creating frame. Error: %s\n", sError.c_str()); return FALSE; } SetSize( nX @@ -3553,7 +3398,7 @@ bool wxWindowOS2::OS2OnDrawItem( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Unable to set current color table. Error: %s\n", sError); + wxLogError("Unable to set current color table. Error: %s\n", sError.c_str()); } // // Set the color table to RGB mode @@ -3568,7 +3413,7 @@ bool wxWindowOS2::OS2OnDrawItem( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Unable to set current color table. Error: %s\n", sError); + wxLogError("Unable to set current color table. Error: %s\n", sError.c_str()); } wxCHECK( pMenuItem->IsKindOf(CLASSINFO(wxMenuItem)), FALSE ); @@ -3777,14 +3622,14 @@ void wxWindowOS2::OnSysColourChanged( wxSysColourChangedEvent& rEvent ) { - wxNode* pNode = GetChildren().First(); + wxWindowListNode* pNode = GetChildren().GetFirst(); while (pNode) { // // Only propagate to non-top-level windows // - wxWindow* pWin = (wxWindow *)pNode->Data(); + wxWindow* pWin = (wxWindow *)pNode->GetData(); if (pWin->GetParent()) { @@ -3793,7 +3638,7 @@ void wxWindowOS2::OnSysColourChanged( rEvent.m_eventObject = pWin; pWin->GetEventHandler()->ProcessEvent(vEvent); } - pNode = pNode->Next(); + pNode = pNode->GetNext(); } } // end of wxWindowOS2::OnSysColourChanged @@ -3821,7 +3666,6 @@ bool wxWindowOS2::HandlePaint() HRGN hRgn; wxPaintEvent vEvent(m_windowId); HPS hPS; - RECTL vRect; bool bProcessed; // Create empty region @@ -3853,8 +3697,6 @@ bool wxWindowOS2::HandlePaint() // HPS hPS; RECTL vRect; - wxFrame* pFrame; - wxWindow* pParent; hPS = ::WinBeginPaint( GetHwnd() ,NULLHANDLE @@ -3914,8 +3756,6 @@ bool wxWindowOS2::HandlePaint() // HPS hPS; RECTL vRect; - wxFrame* pFrame; - wxWindow* pParent; hPS = ::WinBeginPaint( GetHwnd() ,NULLHANDLE @@ -4035,7 +3875,6 @@ bool wxWindowOS2::HandleGetMinMaxInfo( PSWP pSwp ) { - bool bRc = FALSE; POINTL vPoint; switch(pSwp->fl) @@ -4120,13 +3959,20 @@ void wxWindowOS2::InitMouseEvent( , WXUINT uFlags ) { + int nHeight; + DoGetSize(0, &nHeight); rEvent.m_x = nX; - rEvent.m_y = nY; - rEvent.m_shiftDown = ((uFlags & VK_SHIFT) != 0); - rEvent.m_controlDown = ((uFlags & VK_CTRL) != 0); - rEvent.m_leftDown = ((uFlags & VK_BUTTON1) != 0); - rEvent.m_middleDown = ((uFlags & VK_BUTTON3) != 0); - rEvent.m_rightDown = ((uFlags & VK_BUTTON2) != 0); + // Convert to wxWindows standard coordinate system! + rEvent.m_y = nHeight - nY; + rEvent.m_shiftDown = ((uFlags & KC_SHIFT) != 0); + rEvent.m_controlDown = ((uFlags & KC_CTRL) != 0); + rEvent.m_altDown = ((uFlags & KC_ALT) != 0); + rEvent.m_leftDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON1) & + 0x8000) != 0; + rEvent.m_middleDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON3) & + 0x8000) != 0; + rEvent.m_rightDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON2) & + 0x8000) != 0; rEvent.SetTimestamp(s_currentMsg.time); rEvent.m_eventObject = this; rEvent.SetId(GetId()); @@ -4178,7 +4024,6 @@ bool wxWindowOS2::HandleMouseEvent( bProcessed = GetEventHandler()->ProcessEvent(vEvent); if (!bProcessed) { - HPOINTER hPtr = ::WinQuerySysPointer(HWND_DESKTOP, SPTR_WAIT, FALSE); HPOINTER hCursor = (HPOINTER)GetCursor().GetHCURSOR(); if (hCursor != NULLHANDLE) @@ -4575,8 +4420,6 @@ int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent ) { - wxWindowOS2* pGrandParent = NULL; - // // Case 1 // @@ -5372,7 +5215,6 @@ wxWindowOS2* FindWindowForMouseEvent( POINTL vPoint; BOOL rcEnabled = FALSE; BOOL rcVisible = FALSE; - HWND hWndDesktop = HWND_DESKTOP; ::WinQueryPointerPos(HWND_DESKTOP, &vPoint); hWndUnderMouse = ::WinWindowFromPoint(HWND_DESKTOP, &vPoint, TRUE); @@ -5383,7 +5225,6 @@ wxWindowOS2* FindWindowForMouseEvent( if (pWinUnderMouse) { wxWindowList::Node* pCurrent = pWinUnderMouse->GetChildren().GetFirst(); - wxWindow* pChild = NULL; wxWindow* pGrandChild = NULL; RECTL vRect; POINTL vPoint2;