]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
Hopefully fixed library names generated by wx-config for OS/2's PM port.
[wxWidgets.git] / src / msw / window.cpp
index df2d1b269e6a61d5c902a55bbea923f8c686ee56..3c94a80359a1595033961b73cbc50d2467a416f0 100644 (file)
@@ -231,28 +231,6 @@ bool GetCursorPosWinCE(POINT* pt)
 }
 #endif
 
 }
 #endif
 
-// ---------------------------------------------------------------------------
-// wxWindowExtraData
-// ---------------------------------------------------------------------------
-
-#if USE_DEFER_BUG_WORKAROUND
-// This class is used to hold additional data memebers that were added after
-// the stable 2.6.0 release.  They should be moved into wxWindow for 2.7 after
-// binary compatibility is no longer being maintained.
-
-class wxWindowExtraData {
-public:
-    wxWindowExtraData()
-        : m_pendingPosition(wxDefaultPosition),
-          m_pendingSize(wxDefaultSize)
-    {}
-    
-    wxPoint     m_pendingPosition;
-    wxSize      m_pendingSize;
-};
-
-#endif
-
 // ---------------------------------------------------------------------------
 // event tables
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 // event tables
 // ---------------------------------------------------------------------------
@@ -488,9 +466,8 @@ void wxWindowMSW::Init()
     m_lastMouseEvent = -1;
 #endif // wxUSE_MOUSEEVENT_HACK
 
     m_lastMouseEvent = -1;
 #endif // wxUSE_MOUSEEVENT_HACK
 
-#if USE_DEFER_BUG_WORKAROUND
-    m_extraData = new wxWindowExtraData;
-#endif
+    m_pendingPosition = wxDefaultPosition;
+    m_pendingSize = wxDefaultSize;
 }
 
 // Destructor
 }
 
 // Destructor
@@ -539,9 +516,6 @@ wxWindowMSW::~wxWindowMSW()
 
     delete m_childrenDisabled;
 
 
     delete m_childrenDisabled;
 
-#if USE_DEFER_BUG_WORKAROUND
-    delete m_extraData;
-#endif    
 }
 
 // real construction (Init() must have been called before!)
 }
 
 // real construction (Init() must have been called before!)
@@ -846,7 +820,7 @@ inline int GetScrollPosition(HWND hWnd, int wOrient)
                           wOrient,
                           &scrollInfo) )
     {
                           wOrient,
                           &scrollInfo) )
     {
-        // Not neccessarily an error, if there are no scrollbars yet.
+        // Not necessarily an error, if there are no scrollbars yet.
         // wxLogLastError(_T("GetScrollInfo"));
     }
     return scrollInfo.nPos;
         // wxLogLastError(_T("GetScrollInfo"));
     }
     return scrollInfo.nPos;
@@ -1396,7 +1370,8 @@ void wxWindowMSW::Refresh(bool eraseBack, const wxRect *rect)
             pRect = NULL;
         }
 
             pRect = NULL;
         }
 
-#ifndef __SMARTPHONE__
+        // RedrawWindow not available on SmartPhone or eVC++ 3
+#if !defined(__SMARTPHONE__) && !(defined(_WIN32_WCE) && _WIN32_WCE < 400)
         UINT flags = RDW_INVALIDATE | RDW_ALLCHILDREN;
         if ( eraseBack )
             flags |= RDW_ERASE;
         UINT flags = RDW_INVALIDATE | RDW_ALLCHILDREN;
         if ( eraseBack )
             flags |= RDW_ERASE;
@@ -1611,22 +1586,22 @@ void wxWindowMSW::DoSetSize(int x, int y, int width, int height, int sizeFlags)
     int currentW, currentH;
 
 #if USE_DEFER_BUG_WORKAROUND
     int currentW, currentH;
 
 #if USE_DEFER_BUG_WORKAROUND
-    currentX = m_extraData->m_pendingPosition.x;
+    currentX = m_pendingPosition.x;
     if (currentX == wxDefaultCoord)
         GetPosition(&currentX, NULL);
     if (currentX == wxDefaultCoord)
         GetPosition(&currentX, NULL);
-    
-    currentY = m_extraData->m_pendingPosition.y;
+
+    currentY = m_pendingPosition.y;
     if (currentY == wxDefaultCoord)
         GetPosition(NULL, &currentY);
     if (currentY == wxDefaultCoord)
         GetPosition(NULL, &currentY);
-    
-    currentW = m_extraData->m_pendingSize.x;
+
+    currentW = m_pendingSize.x;
     if (currentW == wxDefaultCoord)
         GetSize(&currentW, NULL);
 
     if (currentW == wxDefaultCoord)
         GetSize(&currentW, NULL);
 
-    currentH = m_extraData->m_pendingSize.y;
+    currentH = m_pendingSize.y;
     if (currentH == wxDefaultCoord)
         GetSize(NULL, &currentH);
     if (currentH == wxDefaultCoord)
         GetSize(NULL, &currentH);
-#else    
+#else
     GetPosition(&currentX, &currentY);
     GetSize(&currentW, &currentH);
 #endif
     GetPosition(&currentX, &currentY);
     GetSize(&currentW, &currentH);
 #endif
@@ -1684,16 +1659,17 @@ void wxWindowMSW::DoSetSize(int x, int y, int width, int height, int sizeFlags)
     // save the pending dimensions or not.  This isn't done in DoMoveWindow
     // (where the hdwp is used) because some controls have thier own
     // DoMoveWindow so it is easier to catch it here.
     // save the pending dimensions or not.  This isn't done in DoMoveWindow
     // (where the hdwp is used) because some controls have thier own
     // DoMoveWindow so it is easier to catch it here.
-    HDWP hdwp = GetParent() && !IsTopLevel() ? (HDWP)GetParent()->m_hDWP : NULL;
+    wxWindowMSW *parent = GetParent();
+    HDWP hdwp = parent && !IsTopLevel() ? (HDWP)parent->m_hDWP : NULL;
     if (hdwp)
     {
     if (hdwp)
     {
-        m_extraData->m_pendingPosition = wxPoint(x, y);
-        m_extraData->m_pendingSize = wxSize(width, height);
+        m_pendingPosition = wxPoint(x, y);
+        m_pendingSize = wxSize(width, height);
     }
     else
     {
     }
     else
     {
-        m_extraData->m_pendingPosition = wxDefaultPosition;
-        m_extraData->m_pendingSize = wxDefaultSize;
+        m_pendingPosition = wxDefaultPosition;
+        m_pendingSize = wxDefaultSize;
     }
 #endif
 
     }
 #endif
 
@@ -1796,7 +1772,7 @@ void wxWindowMSW::GetTextExtent(const wxString& string,
 
     SIZE sizeRect;
     TEXTMETRIC tm;
 
     SIZE sizeRect;
     TEXTMETRIC tm;
-    GetTextExtentPoint(hdc, string, string.length(), &sizeRect);
+    ::GetTextExtentPoint32(hdc, string, string.length(), &sizeRect);
     GetTextMetrics(hdc, &tm);
 
     if ( x )
     GetTextMetrics(hdc, &tm);
 
     if ( x )
@@ -3957,6 +3933,7 @@ extern wxCOLORMAP *wxGetStdColourMap()
             // we want to avoid Windows' "help" and for this we need to have a
             // reference bitmap which can tell us what the RGB values change
             // to.
             // we want to avoid Windows' "help" and for this we need to have a
             // reference bitmap which can tell us what the RGB values change
             // to.
+            wxLogNull logNo; // suppress error if we couldn't load the bitmap
             wxBitmap stdColourBitmap(_T("wxBITMAP_STD_COLOURS"));
             if ( stdColourBitmap.Ok() )
             {
             wxBitmap stdColourBitmap(_T("wxBITMAP_STD_COLOURS"));
             if ( stdColourBitmap.Ok() )
             {
@@ -4169,6 +4146,10 @@ bool wxWindowMSW::HandlePrintClient(WXHDC hDC)
     //
     // also note that in this case lParam == PRF_CLIENT but we're
     // clearly expected to paint the background and nothing else!
     //
     // also note that in this case lParam == PRF_CLIENT but we're
     // clearly expected to paint the background and nothing else!
+
+    if ( IsTopLevel() || InheritsBackgroundColour() )
+        return false;
+
     for ( wxWindow *win = GetParent(); win; win = win->GetParent() )
     {
         if ( win->MSWPrintChild(hDC, (wxWindow *)this) )
     for ( wxWindow *win = GetParent(); win; win = win->GetParent() )
     {
         if ( win->MSWPrintChild(hDC, (wxWindow *)this) )
@@ -4306,9 +4287,9 @@ bool wxWindowMSW::HandleSize(int WXUNUSED(w), int WXUNUSED(h), WXUINT wParam)
               node;
               node = node->GetNext() )
         {
               node;
               node = node->GetNext() )
         {
-            wxWindow *child = node->GetData();
-            child->m_extraData->m_pendingPosition = wxDefaultPosition;
-            child->m_extraData->m_pendingSize = wxDefaultSize;
+            wxWindowMSW *child = node->GetData();
+            child->m_pendingPosition = wxDefaultPosition;
+            child->m_pendingSize = wxDefaultSize;
         }
 #endif
     }
         }
 #endif
     }
@@ -5066,7 +5047,7 @@ bool wxWindowMSW::MSWOnScroll(int orientation, WXWORD wParam,
                                                               : SB_VERT,
                                   &scrollInfo) )
             {
                                                               : SB_VERT,
                                   &scrollInfo) )
             {
-                // Not neccessarily an error, if there are no scrollbars yet.
+                // Not necessarily an error, if there are no scrollbars yet.
                 // wxLogLastError(_T("GetScrollInfo"));
             }
 
                 // wxLogLastError(_T("GetScrollInfo"));
             }