]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Don't handle branches specially when sorting items in wxDataViewCtrl.
[wxWidgets.git] / src / common / sizer.cpp
index fdf018eae760f3132d2a1deb0c94b79db8ad31e2..b86f9f83b34cf7dc892a58ee5d41a0022e087731 100644 (file)
@@ -486,7 +486,7 @@ void wxSizerItem::SetDimension( const wxPoint& pos_, const wxSize& size_ )
             // have changed alignment or some other property which would
             // not change the size of the window. In such a case, no
             // wxSizeEvent would normally be generated and thus the
-            // control wouldn't get layed out correctly here.
+            // control wouldn't get laid out correctly here.
 #if 1
             m_window->SetSize(pos.x, pos.y, size.x, size.y,
                               wxSIZE_ALLOW_MINUS_ONE|wxSIZE_FORCE_EVENT );
@@ -840,6 +840,10 @@ bool wxSizer::Replace( size_t old, wxSizerItem *newitem )
 
     wxSizerItem *item = node->GetData();
     node->SetData(newitem);
+
+    if (item->IsWindow() && item->GetWindow())
+        item->GetWindow()->SetContainingSizer(NULL);
+
     delete item;
 
     return true;
@@ -905,6 +909,11 @@ wxSize wxSizer::ComputeFittingClientSize(wxWindow *window)
 
         sizeMax = wxDisplay(disp).GetClientArea().GetSize();
 
+        // If determining the display size failed, skip the max size checks as
+        // we really don't want to create windows of (0, 0) size.
+        if ( !sizeMax.x || !sizeMax.y )
+            return size;
+
         // space for decorations and toolbars etc.
         sizeMax = tlw->WindowToClientSize(sizeMax);
     }
@@ -1319,6 +1328,7 @@ wxGridSizer::wxGridSizer( int cols, int vgap, int hgap )
       m_vgap( vgap ),
       m_hgap( hgap )
 {
+    wxASSERT(cols >= 0);
 }
 
 wxGridSizer::wxGridSizer( int cols, const wxSize& gap )
@@ -1327,6 +1337,7 @@ wxGridSizer::wxGridSizer( int cols, const wxSize& gap )
       m_vgap( gap.GetHeight() ),
       m_hgap( gap.GetWidth() )
 {
+    wxASSERT(cols >= 0);
 }
 
 wxGridSizer::wxGridSizer( int rows, int cols, int vgap, int hgap )
@@ -1335,6 +1346,7 @@ wxGridSizer::wxGridSizer( int rows, int cols, int vgap, int hgap )
       m_vgap( vgap ),
       m_hgap( hgap )
 {
+    wxASSERT(rows >= 0 && cols >= 0);
 }
 
 wxGridSizer::wxGridSizer( int rows, int cols, const wxSize& gap )
@@ -1343,6 +1355,7 @@ wxGridSizer::wxGridSizer( int rows, int cols, const wxSize& gap )
       m_vgap( gap.GetHeight() ),
       m_hgap( gap.GetWidth() )
 {
+    wxASSERT(rows >= 0 && cols >= 0);
 }
 
 wxSizerItem *wxGridSizer::DoInsert(size_t index, wxSizerItem *item)
@@ -2085,7 +2098,7 @@ void wxBoxSizer::RecalcSizes()
 
     // Check for the degenerated case when we don't have enough space for even
     // the min sizes of all the items: in this case we really can't do much
-    // more than to to allocate the min size to as many of fixed size items as
+    // more than to allocate the min size to as many of fixed size items as
     // possible (on the assumption that variable size items such as text zones
     // or list boxes may use scrollbars to show their content even if their
     // size is less than min size but that fixed size items such as buttons
@@ -2389,6 +2402,9 @@ void wxStaticBoxSizer::RecalcSizes()
         // in the wxBoxSizer::RecalcSizes() call below using coordinates relative
         // to the top-left corner of the staticbox:
         m_position.x = m_position.y = 0;
+#elif defined(__WXOSX__) && wxOSX_USE_COCOA
+        // the distance from the 'inner' content view to the embedded controls
+        m_position.x = m_position.y = 10;
 #else
         // if the wxStaticBox has childrens, then these windows must be placed
         // by the wxBoxSizer::RecalcSizes() call below using coordinates relative
@@ -2568,12 +2584,9 @@ void wxStdDialogButtonSizer::Realize()
         Add(12, 40);
 #elif defined(__WXGTK20__)
         // http://library.gnome.org/devel/hig-book/stable/windows-alert.html.en
-        // describes the margins and the buttons order but basically it is
+        // says that the correct button order is
         //
         //      [Help]                  [Alternative] [Cancel] [Affirmative]
-        //
-        // in general case but, somewhat confusingly, the native message box
-        // uses "No Yes Cancel" with these particular buttons so do we as well.
 
         // Flags ensuring that margins between the buttons are 6 pixels.
         const wxSizerFlags
@@ -2585,30 +2598,20 @@ void wxStdDialogButtonSizer::Realize()
         if (m_buttonHelp)
             Add(m_buttonHelp, flagsBtn);
 
-        // extra whitespace between help and cancel/ok buttons
+        // Align the rest of the buttons to the right.
         AddStretchSpacer();
 
         if (m_buttonNegative)
             Add(m_buttonNegative, flagsBtn);
 
         if (m_buttonApply)
-        {
             Add(m_buttonApply, flagsBtn);
 
-            if (m_buttonCancel)
-                Add(m_buttonCancel, flagsBtn);
+        if (m_buttonCancel)
+            Add(m_buttonCancel, flagsBtn);
 
-            if (m_buttonAffirmative)
-                Add(m_buttonAffirmative, flagsBtn);
-        }
-        else // No [Apply]
-        {
-            if (m_buttonAffirmative)
-                Add(m_buttonAffirmative, flagsBtn);
-
-            if (m_buttonCancel)
-                Add(m_buttonCancel, flagsBtn);
-        }
+        if (m_buttonAffirmative)
+            Add(m_buttonAffirmative, flagsBtn);
 
         // Ensure that the right margin is 12 as well.
         AddSpacer(9);