]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement wxBookCtrlBase::CalcSizeFromPage() in the base class.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Mar 2010 23:55:19 +0000 (23:55 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Mar 2010 23:55:19 +0000 (23:55 +0000)
The definition of this method was needlessly duplicated in all of
wx{Choice,List,Tool,Tree}book and in all of them except the first one it
didn't account correctly for the case when the size of the controller was
greater than the size of the page.

Avoid the duplication and fix the best size determination in such case by
providing a single, correct version of the function in the base class itself.

Closes #11793.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/bookctrl.h
include/wx/choicebk.h
include/wx/listbook.h
include/wx/toolbook.h
include/wx/treebook.h
src/common/bookctrl.cpp
src/generic/choicbkg.cpp
src/generic/listbkg.cpp
src/generic/toolbkg.cpp
src/generic/treebkg.cpp

index fbb493ebe5aa9fe6112819853bac4c98cbf35ad0..66704cb9a1df0cda14bb4c24e4de12c07c8acc3f 100644 (file)
@@ -141,7 +141,10 @@ public:
     wxSize GetControllerSize() const;
 
     // calculate the size of the control from the size of its page
-    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
+    //
+    // by default this simply returns size enough to fit both the page and the
+    // controller
+    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
 
     // get/set size of area between book control area and page area
     unsigned int GetInternalBorder() const { return m_internalBorder; }
index ed7ff2bd7c7843cefb83a4d07e209e3e53ba6bba..76a03873926c82589ceaa2daac321825f8f14cf0 100644 (file)
@@ -70,7 +70,6 @@ public:
     virtual wxString GetPageText(size_t n) const;
     virtual int GetPageImage(size_t n) const;
     virtual bool SetPageImage(size_t n, int imageId);
-    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
     virtual bool InsertPage(size_t n,
                             wxWindow *page,
                             const wxString& text,
index b1fb9a73a836a2cce2793cce4224c7b35036379a..a4d1d31c17d09a11e5d41d8575520c7996b2d42a 100644 (file)
@@ -71,7 +71,6 @@ public:
     virtual wxString GetPageText(size_t n) const;
     virtual int GetPageImage(size_t n) const;
     virtual bool SetPageImage(size_t n, int imageId);
-    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
     virtual bool InsertPage(size_t n,
                             wxWindow *page,
                             const wxString& text,
index 52e1de2a7e7d4115e0ed613625e598c72bad1882..c35c4c7ab13e366617f7c6d33b95d2fece027ef1 100644 (file)
@@ -75,7 +75,6 @@ public:
     virtual wxString GetPageText(size_t n) const;
     virtual int GetPageImage(size_t n) const;
     virtual bool SetPageImage(size_t n, int imageId);
-    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
     virtual bool InsertPage(size_t n,
                             wxWindow *page,
                             const wxString& text,
index c9b9b625e0b52e14e359a6b8c1e16e2027ef7577..db3192238485874c36fcea5315a6b0d04b1b8669 100644 (file)
@@ -131,7 +131,6 @@ public:
     virtual wxString GetPageText(size_t n) const;
     virtual int GetPageImage(size_t n) const;
     virtual bool SetPageImage(size_t n, int imageId);
-    virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
     virtual int SetSelection(size_t n) { return DoSetSelection(n, SetSelection_SendEvent); }
     virtual int ChangeSelection(size_t n) { return DoSetSelection(n); }
     virtual int HitTest(const wxPoint& pt, long *flags = NULL) const;
index da06cdafeba1ce300f7bc3f26a1ccdde4ffda51b..cfc13b78a3e537c3c80629e50cfc39037a6da1eb 100644 (file)
@@ -137,6 +137,28 @@ void wxBookCtrlBase::DoInvalidateBestSize()
         wxControl::InvalidateBestSize();
 }
 
+wxSize wxBookCtrlBase::CalcSizeFromPage(const wxSize& sizePage) const
+{
+    // we need to add the size of the choice control and the border between
+    const wxSize sizeController = GetControllerSize();
+
+    wxSize size = sizePage;
+    if ( IsVertical() )
+    {
+        if ( sizeController.x > sizePage.x )
+            size.x = sizeController.x;
+        size.y += sizeController.y + GetInternalBorder();
+    }
+    else // left/right aligned
+    {
+        size.x += sizeController.x + GetInternalBorder();
+        if ( sizeController.y > sizePage.y )
+            size.y = sizeController.y;
+    }
+
+    return size;
+}
+
 void wxBookCtrlBase::SetPageSize(const wxSize& size)
 {
     SetClientSize(CalcSizeFromPage(size));
index 724c0a42150dcd8adc2666a067f82f91b9355dc3..5687ef5c09e6654abfa6794cba6533d05e227245 100644 (file)
@@ -111,33 +111,6 @@ wxChoicebook::Create(wxWindow *parent,
     return true;
 }
 
-// ----------------------------------------------------------------------------
-// wxChoicebook geometry management
-// ----------------------------------------------------------------------------
-
-wxSize wxChoicebook::CalcSizeFromPage(const wxSize& sizePage) const
-{
-    // we need to add the size of the choice control and the border between
-    const wxSize sizeChoice = GetControllerSize();
-
-    wxSize size = sizePage;
-    if ( IsVertical() )
-    {
-        if ( sizeChoice.x > sizePage.x )
-            size.x = sizeChoice.x;
-        size.y += sizeChoice.y + GetInternalBorder();
-    }
-    else // left/right aligned
-    {
-        size.x += sizeChoice.x + GetInternalBorder();
-        if ( sizeChoice.y > sizePage.y )
-            size.y = sizeChoice.y;
-    }
-
-    return size;
-}
-
-
 // ----------------------------------------------------------------------------
 // accessing the pages
 // ----------------------------------------------------------------------------
index 5df5de104a0d638663ff7427d3bcf1adc0a85c08..f829305777dc29fb0311fd3a2ccf3ddb6280a6c2 100644 (file)
@@ -208,24 +208,6 @@ int wxListbook::HitTest(const wxPoint& pt, long *flags) const
     return pagePos;
 }
 
-wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
-{
-    // we need to add the size of the list control and the border between
-    const wxSize sizeList = GetControllerSize();
-
-    wxSize size = sizePage;
-    if ( IsVertical() )
-    {
-        size.y += sizeList.y + GetInternalBorder();
-    }
-    else // left/right aligned
-    {
-        size.x += sizeList.x + GetInternalBorder();
-    }
-
-    return size;
-}
-
 void wxListbook::UpdateSize()
 {
     // we should find a more elegant way to force a layout than generating this
index ae2dbbe36dd1ae592b449e03f3db230f89b20053..b88e45b9cd844b2847c92d75db5d331aae86a762 100644 (file)
@@ -137,24 +137,6 @@ void wxToolbook::OnSize(wxSizeEvent& event)
     wxBookCtrlBase::OnSize(event);
 }
 
-wxSize wxToolbook::CalcSizeFromPage(const wxSize& sizePage) const
-{
-    // we need to add the size of the list control and the border between
-    const wxSize sizeToolBar = GetControllerSize();
-
-    wxSize size = sizePage;
-    if ( IsVertical() )
-    {
-        size.y += sizeToolBar.y + GetInternalBorder();
-    }
-    else // left/right aligned
-    {
-        size.x += sizeToolBar.x + GetInternalBorder();
-    }
-
-    return size;
-}
-
 // ----------------------------------------------------------------------------
 // accessing the pages
 // ----------------------------------------------------------------------------
index ab44d27257488d62f36977fd088f59e71b7301a5..5cb6d44cc852ac5de6aeff2525769dca6f45c693 100644 (file)
@@ -556,16 +556,6 @@ bool wxTreebook::SetPageImage(size_t n, int imageId)
     return true;
 }
 
-wxSize wxTreebook::CalcSizeFromPage(const wxSize& sizePage) const
-{
-    const wxSize sizeTree = GetControllerSize();
-
-    wxSize size = sizePage;
-    size.x += sizeTree.x;
-
-    return size;
-}
-
 int wxTreebook::GetSelection() const
 {
    return m_selection;