]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dialog.cpp
Unicode-related compile fixes
[wxWidgets.git] / src / msw / dialog.cpp
index d89e8ede2c441173a7f25cd59a8475d50af5a440..f65ece0b5d2fb9a35f11e7f8d3ecbf003e54ecd6 100644 (file)
@@ -185,8 +185,13 @@ bool wxDialog::Create(wxWindow *parent,
 #endif
 
     if ( HasFlag(wxRESIZE_BORDER) )
+    {
         CreateGripper();
 
+        Connect(wxEVT_CREATE,
+                wxWindowCreateEventHandler(wxDialog::OnWindowCreate));
+    }
+
     return true;
 }
 
@@ -278,7 +283,7 @@ void wxDialog::Raise()
 // show dialog modally
 int wxDialog::ShowModal()
 {
-    wxASSERT_MSG( !IsModal(), _T("wxDialog::ShowModal() reentered?") );
+    wxASSERT_MSG( !IsModal(), _T("ShowModal() can't be called twice") );
 
     m_endModalCalled = false;
 
@@ -384,6 +389,14 @@ void wxDialog::DestroyGripper()
 {
     if ( m_hGripper )
     {
+        // we used to have trouble with gripper appearing on top (and hence
+        // overdrawing) the other, real, dialog children -- check that this
+        // isn't the case automatically (but notice that this could be false if
+        // we're not shown at all as in this case ResizeGripper() might not
+        // have been called yet)
+        wxASSERT_MSG( !IsShown() ||
+                      ::GetNextWindow((HWND)m_hGripper, GW_HWNDNEXT) == 0,
+            _T("Bug in wxWidgets: gripper should be at the bottom of Z-order") );
         ::DestroyWindow((HWND) m_hGripper);
         m_hGripper = 0;
     }
@@ -414,6 +427,19 @@ void wxDialog::ResizeGripper()
                    SWP_NOACTIVATE);
 }
 
+void wxDialog::OnWindowCreate(wxWindowCreateEvent& event)
+{
+    if ( m_hGripper && IsShown() &&
+            event.GetWindow() && event.GetWindow()->GetParent() == this )
+    {
+        // Put gripper below the newly created child window
+        ::SetWindowPos((HWND)m_hGripper, HWND_BOTTOM, 0, 0, 0, 0,
+                       SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
+    }
+
+    event.Skip();
+}
+
 // ----------------------------------------------------------------------------
 // wxWin event handlers
 // ----------------------------------------------------------------------------