]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/window.cpp
Reverted FILLCOLORHINT->FILLCOLOR change. Now when a near black themeColor is returne...
[wxWidgets.git] / src / os2 / window.cpp
index 842335a91d5d4500929de98a65cf8cfb09eb39f2..ea20d2de24c6b1326b18593e348d8cd37bd70c7a 100644 (file)
@@ -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;
@@ -415,8 +409,6 @@ bool wxWindowOS2::Create(
 
     if (pParent)
     {
-        int                         nTempy;
-
         pParent->AddChild(this);
         hParent = GetWinHwnd(pParent);
 
@@ -755,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();
@@ -947,9 +938,6 @@ void wxWindowOS2::ScrollWindow(
 )
 {
     RECTL                           vRect;
-    RECTL                           vRectHorz;
-    RECTL                           vRectVert;
-    RECTL                           vRectChild;
 
     if (pRect)
     {
@@ -1164,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);
 
@@ -1483,7 +1471,6 @@ void wxWindowOS2::DoMoveWindow(
 )
 {
     RECTL                           vRect;
-    HWND                            hParent;
     wxWindow*                       pParent = GetParent();
 
     if (pParent && !IsKindOf(CLASSINFO(wxDialog)))
@@ -1519,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);
@@ -1674,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)
@@ -1851,7 +1836,6 @@ void wxWindowOS2::GetTextExtent(
     FONTMETRICS                     vFM; // metrics structure
     BOOL                            bRc = FALSE;
     char*                           pStr;
-    ERRORID                         vErrorCode; // last error id code
     HPS                             hPS;
 
 
@@ -1957,28 +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)
-    {
-        // luckily (as we don't have access to wxEventLoopImpl method from here
-        // anyhow...) we don't need to pre process WM_COMMANDs so dispatch it
-        // immediately
-        ::WinDispatchMsg(vHabmain, &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
@@ -2011,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)
         {
@@ -2327,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);
 
     //
@@ -2556,7 +2509,7 @@ MRESULT wxWindowOS2::OS2WindowProc(
                     bProcessed = HandleMouseEvent( uMsg
                                                   ,nX
                                                   ,nY
-                                                  ,(WXUINT)SHORT1FROMMP(wParam)
+                                                  ,(WXUINT)SHORT2FROMMP(lParam)
                                                  );
                 }
                 else
@@ -2573,7 +2526,7 @@ MRESULT wxWindowOS2::OS2WindowProc(
                     bProcessed = pWin->HandleMouseEvent( uMsg
                                                         ,nX
                                                         ,nY
-                                                        ,(WXUINT)SHORT1FROMMP(wParam)
+                                                        ,(WXUINT)SHORT2FROMMP(lParam)
                                                        );
                 }
             }
@@ -3015,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
 )
@@ -3053,7 +2976,7 @@ wxWindow* wxFindWinFromHandle(
 
     if (!pNode)
         return NULL;
-    return (wxWindow *)pNode->Data();
+    return (wxWindow *)pNode->GetData();
 } // end of wxFindWinFromHandle
 
 void wxAssociateWinWithHandle(
@@ -3160,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);
@@ -3702,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())
         {
@@ -3718,7 +3638,7 @@ void wxWindowOS2::OnSysColourChanged(
             rEvent.m_eventObject = pWin;
             pWin->GetEventHandler()->ProcessEvent(vEvent);
         }
-        pNode = pNode->Next();
+        pNode = pNode->GetNext();
     }
 } // end of wxWindowOS2::OnSysColourChanged
 
@@ -3746,7 +3666,6 @@ bool wxWindowOS2::HandlePaint()
     HRGN                            hRgn;
     wxPaintEvent                    vEvent(m_windowId);
     HPS                             hPS;
-    RECTL                           vRect;
     bool                            bProcessed;
 
     // Create empty region
@@ -3778,8 +3697,6 @@ bool wxWindowOS2::HandlePaint()
         //
         HPS                         hPS;
         RECTL                       vRect;
-        wxFrame*                    pFrame;
-        wxWindow*                   pParent;
 
         hPS = ::WinBeginPaint( GetHwnd()
                               ,NULLHANDLE
@@ -3839,8 +3756,6 @@ bool wxWindowOS2::HandlePaint()
         //
         HPS                         hPS;
         RECTL                       vRect;
-        wxFrame*                    pFrame;
-        wxWindow*                   pParent;
 
         hPS = ::WinBeginPaint( GetHwnd()
                               ,NULLHANDLE
@@ -3960,7 +3875,6 @@ bool wxWindowOS2::HandleGetMinMaxInfo(
   PSWP                              pSwp
 )
 {
-    bool                            bRc = FALSE;
     POINTL                          vPoint;
 
     switch(pSwp->fl)
@@ -4045,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());
@@ -4103,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)
@@ -4500,8 +4420,6 @@ int wxWindowOS2::GetOS2ParentHeight(
   wxWindowOS2*               pParent
 )
 {
-    wxWindowOS2*             pGrandParent = NULL;
-
     //
     // Case 1
     //
@@ -5297,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);
@@ -5308,7 +5225,6 @@ wxWindowOS2* FindWindowForMouseEvent(
         if (pWinUnderMouse)
         {
             wxWindowList::Node*     pCurrent = pWinUnderMouse->GetChildren().GetFirst();
-            wxWindow*               pChild = NULL;
             wxWindow*               pGrandChild = NULL;
             RECTL                   vRect;
             POINTL                  vPoint2;