]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
forward ported changes in 2.8.7 from WX_2_8_BRNACH
[wxWidgets.git] / src / msw / window.cpp
index 8bc6143cf3ee31c0eff8b0e1a6d341de317a6763..8cea552169a4ee9533f10fbed3d65e5b5dc0ca9e 100644 (file)
@@ -1359,11 +1359,14 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
 
         switch ( border )
         {
-            case wxBORDER_DEFAULT: // also wxBORDER_THEME
-                break;
+            default:
+            case wxBORDER_DEFAULT:
+                wxFAIL_MSG( _T("unknown border style") );
+                // fall through
 
             case wxBORDER_NONE:
             case wxBORDER_SIMPLE:
+            case wxBORDER_THEME:
                 break;
 
             case wxBORDER_STATIC:
@@ -1379,10 +1382,6 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
                 style &= ~WS_BORDER;
                 break;
 
-            default:
-                wxFAIL_MSG( _T("unknown border style") );
-                break;
-
 //            case wxBORDER_DOUBLE:
 //                *exstyle |= WS_EX_DLGMODALFRAME;
 //                break;
@@ -1443,7 +1442,7 @@ void wxWindowMSW::OnInternalIdle()
     }
 #endif // !HAVE_TRACKMOUSEEVENT
 
-    if (wxUpdateUIEvent::CanUpdate(this))
+    if (wxUpdateUIEvent::CanUpdate(this) && IsShown())
         UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
 }
 
@@ -3263,9 +3262,9 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
                     {
                         rect = *((RECT*)lParam);
                     }
-                    wxUxThemeHandle hTheme(this, L"EDIT");
+                    wxUxThemeHandle hTheme((wxWindow *)this, L"EDIT");
                     RECT rcClient = { 0, 0, 0, 0 };
-                    wxClientDC dc(this);
+                    wxClientDC dc((wxWindow *)this);
 
                     if (theme->GetThemeBackgroundContentRect(
                             hTheme, GetHdcOf(dc), EP_EDITTEXT, ETS_NORMAL,
@@ -3291,8 +3290,8 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
                     rc.result = MSWDefWindowProc(message, wParam, lParam);
                     processed = true;
 
-                    wxUxThemeHandle hTheme(this, L"EDIT");
-                    wxWindowDC dc(this);
+                    wxUxThemeHandle hTheme((wxWindow *)this, L"EDIT");
+                    wxWindowDC dc((wxWindow *)this);
 
                     // Clip the DC so that you only draw on the non-client area
                     RECT rcBorder;
@@ -4507,6 +4506,10 @@ bool wxWindowMSW::HandlePaint()
     eventNc.SetEventObject(this);
     GetEventHandler()->ProcessEvent(eventNc);
 
+    // don't keep an HRGN we don't need any longer (GetUpdateRegion() can only
+    // be called from inside the event handlers called above)
+    m_updateRegion.Clear();
+
     return processed;
 }
 
@@ -4705,7 +4708,7 @@ bool wxWindowMSW::HandleMoving(wxRect& rect)
 
 bool wxWindowMSW::HandleEnterSizeMove()
 {
-    wxMoveEvent event(wxPoint(), m_windowId);
+    wxMoveEvent event(wxPoint(0,0), m_windowId);
     event.SetEventType(wxEVT_MOVE_START);
     event.SetEventObject(this);
 
@@ -4714,7 +4717,7 @@ bool wxWindowMSW::HandleEnterSizeMove()
 
 bool wxWindowMSW::HandleExitSizeMove()
 {
-    wxMoveEvent event(wxPoint(), m_windowId);
+    wxMoveEvent event(wxPoint(0,0), m_windowId);
     event.SetEventType(wxEVT_MOVE_END);
     event.SetEventObject(this);
 
@@ -4872,8 +4875,11 @@ bool wxWindowMSW::HandleGetMinMaxInfo(void *WXUNUSED_IN_WINCE(mmInfo))
 // command messages
 // ---------------------------------------------------------------------------
 
-bool wxWindowMSW::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
+bool wxWindowMSW::HandleCommand(WXWORD id_, WXWORD cmd, WXHWND control)
 {
+    // sign extend to int from short before comparing with the other int ids
+    int id = (signed short)id_;
+
 #if wxUSE_MENUS_NATIVE
     if ( !cmd && wxCurrentPopupMenu )
     {
@@ -4896,8 +4902,7 @@ bool wxWindowMSW::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
     // try the id
     if ( !win )
     {
-        // must cast to a signed type before comparing with other ids!
-        win = FindItem((signed short)id);
+        win = FindItem(id);
     }
 
     if ( win )