]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Generalised WinCE fix for other platforms
[wxWidgets.git] / src / common / sizer.cpp
index f959eb34b253b0f989988b73228f85701cb56826..a91079626d5f6add362b741a7aca90f22201db79 100644 (file)
@@ -388,7 +388,14 @@ void wxSizerItem::DeleteWindows()
             break;
 
         case Item_Window:
+            //We are deleting the window from this sizer - normally
+            //the window destroys the sizer associated with it,
+            //which might destroy this, which we don't want
+            m_window->SetContainingSizer(NULL);
             m_window->Destroy();
+            //Putting this after the switch will result in a spacer
+            //not being deleted properly on destruction
+            m_kind = Item_None; 
             break;
 
         case Item_Sizer:
@@ -400,7 +407,6 @@ void wxSizerItem::DeleteWindows()
             wxFAIL_MSG( _T("unexpected wxSizerItem::m_kind") );
     }
 
-    m_kind = Item_None;
 }
 
 void wxSizerItem::Show( bool show )
@@ -416,7 +422,7 @@ void wxSizerItem::Show( bool show )
             break;
 
         case Item_Sizer:
-            m_sizer->ShowItems(show);
+            m_sizer->Show(show);
             break;
 
         case Item_Spacer:
@@ -1862,10 +1868,31 @@ void wxStdDialogButtonSizer::Realize()
 
         if (m_buttonAffirmative)
             Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT, 6);
+#elif defined(__WXMSW__)
+        // Windows
+
+        // right-justify buttons
+        Add(0, 0, 1, wxEXPAND, 0);
+
+        if (m_buttonAffirmative){
+            Add((wxWindow*)m_buttonAffirmative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonAffirmative->ConvertDialogToPixels(wxSize(2, 0)).x);
+        }
+
+        if (m_buttonNegative){
+            Add((wxWindow*)m_buttonNegative, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonNegative->ConvertDialogToPixels(wxSize(2, 0)).x);
+        }
+
+        if (m_buttonCancel){
+            Add((wxWindow*)m_buttonCancel, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonCancel->ConvertDialogToPixels(wxSize(2, 0)).x);
+        }
+        if (m_buttonApply)
+            Add((wxWindow*)m_buttonApply, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonApply->ConvertDialogToPixels(wxSize(2, 0)).x);
+
+        if (m_buttonHelp)
+            Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(2, 0)).x);
 #else
-    // do the same thing for GTK1 and Windows platforms
-    // and assume any platform not accounted for here will use
-    // Windows style
+        // GTK+1 and any other platform
+        
         // Add(0, 0, 0, wxLEFT, 5); // Not sure what this was for but it unbalances the dialog
         if (m_buttonHelp)
             Add((wxWindow*)m_buttonHelp, 0, wxALIGN_CENTRE | wxLEFT | wxRIGHT, m_buttonHelp->ConvertDialogToPixels(wxSize(4, 0)).x);