Set/get for internal border in book based controls.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2005-10-18 12:31:11 +00:00
parent afe1376994
commit 159e6235b2
5 changed files with 46 additions and 47 deletions

View File

@@ -16,6 +16,8 @@ All (GUI):
- wxItemContainerImmutable::FindString unified (affects wxRadioBox, wxListBox, - wxItemContainerImmutable::FindString unified (affects wxRadioBox, wxListBox,
wxComboBox and wxChoice) wxComboBox and wxChoice)
- wxWindow::Fit() now works correctly for frames and dialogs too - wxWindow::Fit() now works correctly for frames and dialogs too
- added access to the border size between pages and controller in book
based controls (wxBookCtrlBase::Get/SetInternalBorder)
wxMSW: wxMSW:

View File

@@ -118,6 +118,15 @@ public:
// calculate the size of the control from the size of its page // calculate the size of the control from the size of its page
virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0; virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
// get/set size of area between book control area and page area
inline unsigned int GetInternalBorder() const
{
return m_internalBorder;
}
void SetInternalBorder(unsigned int internalBorder)
{
m_internalBorder = internalBorder;
}
// operations // operations
// ---------- // ----------
@@ -192,13 +201,9 @@ protected:
// helper: get the next page wrapping if we reached the end // helper: get the next page wrapping if we reached the end
int GetNextPage(bool forward) const; int GetNextPage(bool forward) const;
// common part of all ctors
void Init();
// Always rely on GetBestSize, which will look at all the pages // Always rely on GetBestSize, which will look at all the pages
virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) { } virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) { }
// the array of all pages of this control // the array of all pages of this control
wxArrayPages m_pages; wxArrayPages m_pages;
@@ -208,6 +213,13 @@ protected:
// true if we must delete m_imageList // true if we must delete m_imageList
bool m_ownsImageList; bool m_ownsImageList;
private:
// common part of all ctors
void Init();
// internal border
unsigned int m_internalBorder;
DECLARE_NO_COPY_CLASS(wxBookCtrlBase) DECLARE_NO_COPY_CLASS(wxBookCtrlBase)
}; };

View File

@@ -42,6 +42,12 @@ void wxBookCtrlBase::Init()
{ {
m_imageList = NULL; m_imageList = NULL;
m_ownsImageList = false; m_ownsImageList = false;
#if defined(__WXWINCE__)
m_internalBorder = 1;
#else
m_internalBorder = 5;
#endif
} }
bool bool
@@ -196,11 +202,10 @@ int wxBookCtrlBase::GetNextPage(bool forward) const
} }
else // notebook is empty, no next page else // notebook is empty, no next page
{ {
nPage = -1; nPage = wxNOT_FOUND;
} }
return nPage; return nPage;
} }
#endif // wxUSE_BOOKCTRL #endif // wxUSE_BOOKCTRL

View File

@@ -31,17 +31,6 @@
#include "wx/imaglist.h" #include "wx/imaglist.h"
#include "wx/settings.h" #include "wx/settings.h"
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// margin between the choice and the page
#if defined(__WXWINCE__)
const wxCoord MARGIN = 1;
#else
const wxCoord MARGIN = 5;
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// various wxWidgets macros // various wxWidgets macros
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -149,19 +138,19 @@ wxRect wxChoicebook::GetPageRect() const
// fall through // fall through
case wxCHB_TOP: case wxCHB_TOP:
rectPage.y = sizeChoice.y + MARGIN; rectPage.y = sizeChoice.y + GetInternalBorder();
// fall through // fall through
case wxCHB_BOTTOM: case wxCHB_BOTTOM:
rectPage.height -= sizeChoice.y + MARGIN; rectPage.height -= sizeChoice.y + GetInternalBorder();
break; break;
case wxCHB_LEFT: case wxCHB_LEFT:
rectPage.x = sizeChoice.x + MARGIN; rectPage.x = sizeChoice.x + GetInternalBorder();
// fall through // fall through
case wxCHB_RIGHT: case wxCHB_RIGHT:
rectPage.width -= sizeChoice.x + MARGIN; rectPage.width -= sizeChoice.x + GetInternalBorder();
break; break;
} }
@@ -217,17 +206,17 @@ void wxChoicebook::OnSize(wxSizeEvent& event)
wxSize wxChoicebook::CalcSizeFromPage(const wxSize& sizePage) const wxSize wxChoicebook::CalcSizeFromPage(const wxSize& sizePage) const
{ {
// we need to add the size of the choice control and the margin // we need to add the size of the choice control and the border between
const wxSize sizeChoice = GetChoiceSize(); const wxSize sizeChoice = GetChoiceSize();
wxSize size = sizePage; wxSize size = sizePage;
if ( IsVertical() ) if ( IsVertical() )
{ {
size.y += sizeChoice.y + MARGIN; size.y += sizeChoice.y + GetInternalBorder();
} }
else // left/right aligned else // left/right aligned
{ {
size.x += sizeChoice.x + MARGIN; size.x += sizeChoice.x + GetInternalBorder();
} }
return size; return size;
@@ -346,16 +335,16 @@ wxChoicebook::InsertPage(size_t n,
// some page should be selected: either this one or the first one if there // some page should be selected: either this one or the first one if there
// is still no selection // is still no selection
int selNew = -1; int selNew = wxNOT_FOUND;
if ( bSelect ) if ( bSelect )
selNew = n; selNew = n;
else if ( m_selection == -1 ) else if ( m_selection == wxNOT_FOUND )
selNew = 0; selNew = 0;
if ( selNew != m_selection ) if ( selNew != m_selection )
page->Hide(); page->Hide();
if ( selNew != -1 ) if ( selNew != wxNOT_FOUND )
SetSelection(selNew); SetSelection(selNew);
InvalidateBestSize(); InvalidateBestSize();

View File

@@ -32,14 +32,6 @@
#include "wx/imaglist.h" #include "wx/imaglist.h"
#include "wx/settings.h" #include "wx/settings.h"
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// margin between the list and the page, should be bigger than wxStaticLine
// size
const wxCoord MARGIN = 5;
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// various wxWidgets macros // various wxWidgets macros
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -178,19 +170,19 @@ wxRect wxListbook::GetPageRect() const
// fall through // fall through
case wxLB_TOP: case wxLB_TOP:
rectPage.y = sizeList.y + MARGIN; rectPage.y = sizeList.y + GetInternalBorder();
// fall through // fall through
case wxLB_BOTTOM: case wxLB_BOTTOM:
rectPage.height -= sizeList.y + MARGIN; rectPage.height -= sizeList.y + GetInternalBorder();
break; break;
case wxLB_LEFT: case wxLB_LEFT:
rectPage.x = sizeList.x + MARGIN; rectPage.x = sizeList.x + GetInternalBorder();
// fall through // fall through
case wxLB_RIGHT: case wxLB_RIGHT:
rectPage.width -= sizeList.x + MARGIN; rectPage.width -= sizeList.x + GetInternalBorder();
break; break;
} }
@@ -255,21 +247,21 @@ void wxListbook::OnSize(wxSizeEvent& event)
{ {
case wxLB_TOP: case wxLB_TOP:
rectLine.y = sizeNew.y + 1; rectLine.y = sizeNew.y + 1;
rectLine.height = MARGIN - 2; rectLine.height = GetInternalBorder() - 2;
break; break;
case wxLB_BOTTOM: case wxLB_BOTTOM:
rectLine.height = MARGIN - 2; rectLine.height = GetInternalBorder() - 2;
rectLine.y = sizeClient.y - sizeNew.y - rectLine.height; rectLine.y = sizeClient.y - sizeNew.y - rectLine.height;
break; break;
case wxLB_LEFT: case wxLB_LEFT:
rectLine.x = sizeNew.x + 1; rectLine.x = sizeNew.x + 1;
rectLine.width = MARGIN - 2; rectLine.width = GetInternalBorder() - 2;
break; break;
case wxLB_RIGHT: case wxLB_RIGHT:
rectLine.width = MARGIN - 2; rectLine.width = GetInternalBorder() - 2;
rectLine.x = sizeClient.x - sizeNew.x - rectLine.width; rectLine.x = sizeClient.x - sizeNew.x - rectLine.width;
break; break;
} }
@@ -289,17 +281,17 @@ void wxListbook::OnSize(wxSizeEvent& event)
wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
{ {
// we need to add the size of the list control and the margin // we need to add the size of the list control and the border between
const wxSize sizeList = GetListSize(); const wxSize sizeList = GetListSize();
wxSize size = sizePage; wxSize size = sizePage;
if ( IsVertical() ) if ( IsVertical() )
{ {
size.y += sizeList.y + MARGIN; size.y += sizeList.y + GetInternalBorder();
} }
else // left/right aligned else // left/right aligned
{ {
size.x += sizeList.x + MARGIN; size.x += sizeList.x + GetInternalBorder();
} }
return size; return size;
@@ -500,4 +492,3 @@ void wxListbook::OnListSelected(wxListEvent& eventList)
} }
#endif // wxUSE_LISTBOOK #endif // wxUSE_LISTBOOK