]> git.saurik.com Git - wxWidgets.git/commitdiff
avoid code duplication between the generic and GTK versions, factor the common code...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 23:27:10 +0000 (23:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 23:27:10 +0000 (23:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/collpaneg.h
src/generic/collpaneg.cpp
src/gtk/collpane.cpp

index b58bf5a395228fa485737d1fe57e7ba3d76e172e..841f2187f6f4a781fe0991cdbdf456a958a68aa7 100644 (file)
@@ -71,6 +71,10 @@ public:
     virtual wxString GetLabel() const
         { return m_strLabel; }
 
+
+    // implementation only, don't use
+    void OnStateChange(const wxSize& sizeNew);
+
 protected: 
     // overridden methods
     virtual wxSize DoGetBestSize() const;
index 962ccce1056210e4ab20bfa7949ae4080617c10b..cded9aef40737991df876de6f463a2f2977a5b69 100644 (file)
@@ -102,21 +102,9 @@ wxString wxGenericCollapsiblePane::GetBtnLabel() const
     return m_strLabel + (IsCollapsed() ? wxT(" >>") : wxT(" <<"));
 }
 
-void wxGenericCollapsiblePane::Collapse(bool collapse)
+void wxGenericCollapsiblePane::OnStateChange(const wxSize& sz)
 {
-    // optimization
-    if ( IsCollapsed() == collapse )
-        return;
-
-    // update our state
-    m_pPane->Show(!collapse);
-
-    // update button label
-    // NB: this must be done after updating our "state"
-    m_pButton->SetLabel(GetBtnLabel());
-
     // minimal size has priority over the best size so set here our min size
-    wxSize sz = GetBestSize();
     SetMinSize(sz);
     SetSize(sz);
 
@@ -157,6 +145,22 @@ void wxGenericCollapsiblePane::Collapse(bool collapse)
     }
 }
 
+void wxGenericCollapsiblePane::Collapse(bool collapse)
+{
+    // optimization
+    if ( IsCollapsed() == collapse )
+        return;
+
+    // update our state
+    m_pPane->Show(!collapse);
+
+    // update button label
+    // NB: this must be done after updating our "state"
+    m_pButton->SetLabel(GetBtnLabel());
+
+    OnStateChange(GetBestSize());
+}
+
 void wxGenericCollapsiblePane::SetLabel(const wxString &label)
 {
     m_strLabel = label;
index 9bd6522d51f5e8fa814f41a94e3b5a87c191a2d0..edd737d066fab27151d30cdf19bbddcdc2350297 100644 (file)
@@ -72,33 +72,7 @@ static void gtk_collapsiblepane_expanded_callback (GObject    *object,
         sz = p->m_szCollapsed;
     }
 
-    // minimal size has priority over the best size so set here our min size
-    p->SetMinSize(sz);
-    p->SetSize(sz);
-
-    wxWindow *top = wxGetTopLevelParent(p);
-    if (top)
-    {
-        // we've changed our size, thus our top level parent needs to relayout
-        // itself
-        top->Layout();
-
-        if (p->IsExpanded())
-        {
-            // force our parent to "fit", i.e. expand so that it can honour
-            // our minimal size
-            top->Fit();
-        }
-        else // correctly
-        {
-            if (top->GetSizer())
-                top->GetSizer()->SetSizeHints(top);
-
-            // use SetClientSize() and not SetSize() otherwise the size for
-            // e.g. a wxFrame with a menubar wouldn't be correctly set
-            top->SetClientSize(sz);
-        }
-    }
+    p->OnStateChange(sz);
 
     if ( p->m_bIgnoreNextChange )
     {