wxAuiNotebook bitmaps working now

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43198 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Benjamin Williams 2006-11-08 15:19:38 +00:00
parent 42688aea2d
commit 2b9aac3387
3 changed files with 388 additions and 278 deletions

View File

@ -57,239 +57,7 @@ enum wxAuiNotebookOption
// tab art class
class WXDLLIMPEXP_AUI wxAuiTabArt
{
public:
wxAuiTabArt() { }
virtual ~wxAuiTabArt() { }
virtual wxAuiTabArt* Clone() = 0;
virtual void SetFlags(unsigned int flags) = 0;
virtual void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count) = 0;
virtual void SetNormalFont(const wxFont& font) = 0;
virtual void SetSelectedFont(const wxFont& font) = 0;
virtual void SetMeasuringFont(const wxFont& font) = 0;
virtual void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect) = 0;
virtual void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent) = 0;
virtual void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect) = 0;
virtual int GetIndentSize() = 0;
virtual wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
bool active,
int close_button_state,
int* x_extent) = 0;
virtual int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx) = 0;
virtual int GetBestTabCtrlSize(wxWindow* wnd) = 0;
};
class WXDLLIMPEXP_AUI wxAuiSimpleTabArt : public wxAuiTabArt
{
public:
wxAuiSimpleTabArt();
virtual ~wxAuiSimpleTabArt();
wxAuiTabArt* Clone();
void SetFlags(unsigned int flags);
void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count);
void SetNormalFont(const wxFont& font);
void SetSelectedFont(const wxFont& font);
void SetMeasuringFont(const wxFont& font);
void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect);
void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent);
void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect);
int GetIndentSize();
wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
bool active,
int close_button_state,
int* x_extent);
int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx);
int GetBestTabCtrlSize(wxWindow* wnd);
protected:
wxFont m_normal_font;
wxFont m_selected_font;
wxFont m_measuring_font;
wxPen m_normal_bkpen;
wxPen m_selected_bkpen;
wxBrush m_normal_bkbrush;
wxBrush m_selected_bkbrush;
wxBrush m_bkbrush;
wxBitmap m_active_close_bmp;
wxBitmap m_disabled_close_bmp;
wxBitmap m_active_left_bmp;
wxBitmap m_disabled_left_bmp;
wxBitmap m_active_right_bmp;
wxBitmap m_disabled_right_bmp;
wxBitmap m_active_windowlist_bmp;
wxBitmap m_disabled_windowlist_bmp;
int m_fixed_tab_width;
unsigned int m_flags;
};
class WXDLLIMPEXP_AUI wxAuiDefaultTabArt : public wxAuiTabArt
{
public:
wxAuiDefaultTabArt();
virtual ~wxAuiDefaultTabArt();
wxAuiTabArt* Clone();
void SetFlags(unsigned int flags);
void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count);
void SetNormalFont(const wxFont& font);
void SetSelectedFont(const wxFont& font);
void SetMeasuringFont(const wxFont& font);
void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect);
void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent);
void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect);
int GetIndentSize();
wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
bool active,
int close_button_state,
int* x_extent);
int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx);
int GetBestTabCtrlSize(wxWindow* wnd);
protected:
wxFont m_normal_font;
wxFont m_selected_font;
wxFont m_measuring_font;
wxPen m_normal_bkpen;
wxPen m_selected_bkpen;
wxBrush m_normal_bkbrush;
wxBrush m_selected_bkbrush;
wxBrush m_bkbrush;
wxBitmap m_active_close_bmp;
wxBitmap m_disabled_close_bmp;
wxBitmap m_active_left_bmp;
wxBitmap m_disabled_left_bmp;
wxBitmap m_active_right_bmp;
wxBitmap m_disabled_right_bmp;
wxBitmap m_active_windowlist_bmp;
wxBitmap m_disabled_windowlist_bmp;
int m_fixed_tab_width;
unsigned int m_flags;
};
// event declarations/classes
// aui notebook event class
class WXDLLIMPEXP_AUI wxAuiNotebookEvent : public wxNotifyEvent
{
@ -333,9 +101,6 @@ private:
};
class WXDLLIMPEXP_AUI wxAuiNotebookPage
{
public:
@ -365,6 +130,253 @@ WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiTabContainerButton, wxAuiTabContainerButt
#endif
// tab art class
class WXDLLIMPEXP_AUI wxAuiTabArt
{
public:
wxAuiTabArt() { }
virtual ~wxAuiTabArt() { }
virtual wxAuiTabArt* Clone() = 0;
virtual void SetFlags(unsigned int flags) = 0;
virtual void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count) = 0;
virtual void SetNormalFont(const wxFont& font) = 0;
virtual void SetSelectedFont(const wxFont& font) = 0;
virtual void SetMeasuringFont(const wxFont& font) = 0;
virtual void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect) = 0;
virtual void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent) = 0;
virtual void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect) = 0;
virtual int GetIndentSize() = 0;
virtual wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
int* x_extent) = 0;
virtual int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx) = 0;
virtual int GetBestTabCtrlSize(wxWindow* wnd,
wxAuiNotebookPageArray& pages) = 0;
};
class WXDLLIMPEXP_AUI wxAuiDefaultTabArt : public wxAuiTabArt
{
public:
wxAuiDefaultTabArt();
virtual ~wxAuiDefaultTabArt();
wxAuiTabArt* Clone();
void SetFlags(unsigned int flags);
void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count);
void SetNormalFont(const wxFont& font);
void SetSelectedFont(const wxFont& font);
void SetMeasuringFont(const wxFont& font);
void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect);
void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent);
void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect);
int GetIndentSize();
wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
int* x_extent);
int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx);
int GetBestTabCtrlSize(wxWindow* wnd,
wxAuiNotebookPageArray& pages);
protected:
wxFont m_normal_font;
wxFont m_selected_font;
wxFont m_measuring_font;
wxPen m_normal_bkpen;
wxPen m_selected_bkpen;
wxBrush m_normal_bkbrush;
wxBrush m_selected_bkbrush;
wxBrush m_bkbrush;
wxBitmap m_active_close_bmp;
wxBitmap m_disabled_close_bmp;
wxBitmap m_active_left_bmp;
wxBitmap m_disabled_left_bmp;
wxBitmap m_active_right_bmp;
wxBitmap m_disabled_right_bmp;
wxBitmap m_active_windowlist_bmp;
wxBitmap m_disabled_windowlist_bmp;
int m_fixed_tab_width;
int m_tab_ctrl_height;
unsigned int m_flags;
};
class WXDLLIMPEXP_AUI wxAuiSimpleTabArt : public wxAuiTabArt
{
public:
wxAuiSimpleTabArt();
virtual ~wxAuiSimpleTabArt();
wxAuiTabArt* Clone();
void SetFlags(unsigned int flags);
void SetSizingInfo(const wxSize& tab_ctrl_size,
size_t tab_count);
void SetNormalFont(const wxFont& font);
void SetSelectedFont(const wxFont& font);
void SetMeasuringFont(const wxFont& font);
void DrawBackground(
wxDC& dc,
wxWindow* wnd,
const wxRect& rect);
void DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
wxRect* out_tab_rect,
wxRect* out_button_rect,
int* x_extent);
void DrawButton(
wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
int bitmap_id,
int button_state,
int orientation,
const wxBitmap& bitmap_override,
wxRect* out_rect);
int GetIndentSize();
wxSize GetTabSize(
wxDC& dc,
wxWindow* wnd,
const wxString& caption,
const wxBitmap& bitmap,
bool active,
int close_button_state,
int* x_extent);
int ShowWindowList(
wxWindow* wnd,
const wxArrayString& items,
int active_idx);
int GetBestTabCtrlSize(wxWindow* wnd,
wxAuiNotebookPageArray& pages);
protected:
wxFont m_normal_font;
wxFont m_selected_font;
wxFont m_measuring_font;
wxPen m_normal_bkpen;
wxPen m_selected_bkpen;
wxBrush m_normal_bkbrush;
wxBrush m_selected_bkbrush;
wxBrush m_bkbrush;
wxBitmap m_active_close_bmp;
wxBitmap m_disabled_close_bmp;
wxBitmap m_active_left_bmp;
wxBitmap m_disabled_left_bmp;
wxBitmap m_active_right_bmp;
wxBitmap m_disabled_right_bmp;
wxBitmap m_active_windowlist_bmp;
wxBitmap m_disabled_windowlist_bmp;
int m_fixed_tab_width;
unsigned int m_flags;
};
class WXDLLIMPEXP_AUI wxAuiTabContainer
{
public:
@ -510,12 +522,19 @@ public:
size_t GetPageCount() const;
wxWindow* GetPage(size_t page_idx) const;
void SetArtProvider(wxAuiTabArt* art);
wxAuiTabArt* GetArtProvider();
protected:
// these can be overridden
virtual void SetTabCtrlHeight(int height);
virtual int CalculateTabCtrlHeight();
protected:
void DoSizing();
void InitNotebook(long style);
wxAuiTabCtrl* GetTabCtrlFromPoint(const wxPoint& pt);
wxWindow* GetTabFrameFromTabCtrl(wxWindow* tab_ctrl);
wxAuiTabCtrl* GetActiveTabCtrl();
@ -524,8 +543,6 @@ protected:
protected:
void DoSizing();
void InitNotebook(long style);
void OnChildFocus(wxChildFocusEvent& evt);
void OnRender(wxAuiManagerEvent& evt);

View File

@ -1448,8 +1448,10 @@ wxAuiNotebook* MyFrame::CreateNotebook()
wxPoint(client_size.x, client_size.y),
wxSize(430,200),
m_notebook_style);
wxBitmap page_bmp = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, wxSize(16,16));
ctrl->AddPage(CreateHTMLCtrl(ctrl), wxT("Welcome to wxAUI"));
ctrl->AddPage(CreateHTMLCtrl(ctrl), wxT("Welcome to wxAUI") , false, page_bmp);
wxPanel *panel = new wxPanel( ctrl, wxID_ANY );
wxFlexGridSizer *flex = new wxFlexGridSizer( 2 );
@ -1465,10 +1467,10 @@ wxAuiNotebook* MyFrame::CreateNotebook()
wxSP_ARROW_KEYS, 5, 50, 5 ), 0, wxALL|wxALIGN_CENTRE, 5 );
flex->Add( 5,5 ); flex->Add( 5,5 );
panel->SetSizer( flex );
ctrl->AddPage( panel, wxT("wxPanel") );
ctrl->AddPage( panel, wxT("wxPanel"), false, page_bmp );
ctrl->AddPage( new wxTextCtrl( ctrl, wxID_ANY, wxT("Some text"),
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxNO_BORDER) , wxT("wxTextCtrl 1") );
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxNO_BORDER) , wxT("wxTextCtrl 1"), false, page_bmp );
ctrl->AddPage( new wxTextCtrl( ctrl, wxID_ANY, wxT("Some more text"),
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxNO_BORDER) , wxT("wxTextCtrl 2") );

View File

@ -221,6 +221,7 @@ wxAuiDefaultTabArt::wxAuiDefaultTabArt()
m_measuring_font = m_selected_font;
m_fixed_tab_width = 100;
m_tab_ctrl_height = 0;
wxColour base_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
@ -284,6 +285,8 @@ void wxAuiDefaultTabArt::SetSizingInfo(const wxSize& tab_ctrl_size,
if (m_fixed_tab_width > 220)
m_fixed_tab_width = 220;
m_tab_ctrl_height = tab_ctrl_size.y;
}
@ -316,6 +319,7 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption_text,
const wxBitmap& bitmap,
bool active,
int close_button_state,
wxRect* out_tab_rect,
@ -338,9 +342,15 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc,
dc.GetTextExtent(caption, &normal_textx, &normal_texty);
// figure out the size of the tab
wxSize tab_size = GetTabSize(dc, wnd, caption, active, close_button_state, x_extent);
wxSize tab_size = GetTabSize(dc,
wnd,
caption,
bitmap,
active,
close_button_state,
x_extent);
wxCoord tab_height = tab_size.y;
wxCoord tab_height = m_tab_ctrl_height - 3;
wxCoord tab_width = tab_size.x;
wxCoord tab_x = in_rect.x;
wxCoord tab_y = in_rect.y + in_rect.height - tab_height;
@ -388,6 +398,9 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc,
points[5].x = tab_x + tab_width;
points[5].y = tab_y + tab_height - 4;
int drawn_tab_yoff = points[1].y;
int drawn_tab_height = points[0].y - points[1].y;
// draw gradient background
if (active)
@ -423,17 +436,33 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc,
dc.DrawLine(points[0].x, points[0].y, points[5].x+1, points[5].y);
}
int text_offset;
int text_offset = tab_x + 8;
int close_button_width = 0;
if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN)
{
close_button_width = m_active_close_bmp.GetWidth();
}
text_offset = tab_x + 8;
if (bitmap.IsOk())
{
int bitmap_offset = tab_x + 8;
// draw bitmap
dc.DrawBitmap(bitmap,
bitmap_offset,
drawn_tab_yoff + (drawn_tab_height/2) - (bitmap.GetHeight()/2) + 1,
true);
text_offset = bitmap_offset + bitmap.GetWidth();
text_offset += 3; // bitmap padding
}
else
{
text_offset = tab_x + 8;
}
wxString draw_text = ChopText(dc,
caption,
@ -442,7 +471,7 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc,
// draw tab text
dc.DrawText(draw_text,
text_offset,
(tab_y + tab_height)/2 - (texty/2));
drawn_tab_yoff + (drawn_tab_height)/2 - (texty/2) - 1);
@ -481,6 +510,7 @@ int wxAuiDefaultTabArt::GetIndentSize()
wxSize wxAuiDefaultTabArt::GetTabSize(wxDC& dc,
wxWindow* WXUNUSED(wnd),
const wxString& caption,
const wxBitmap& bitmap,
bool WXUNUSED(active),
int close_button_state,
int* x_extent)
@ -493,12 +523,24 @@ wxSize wxAuiDefaultTabArt::GetTabSize(wxDC& dc,
dc.GetTextExtent(wxT("ABCDEFXj"), &tmp, &measured_texty);
// add padding around the text
wxCoord tab_width = measured_textx + 16;
wxCoord tab_height = measured_texty + 10;
wxCoord tab_width = measured_textx;
wxCoord tab_height = measured_texty;
// if the close button is showing, add space for it
if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN)
tab_width += m_active_close_bmp.GetWidth() + 3;
// if there's a bitmap, add space for it
if (bitmap.IsOk())
{
tab_width += bitmap.GetWidth();
tab_width += 3; // right side bitmap padding
tab_height = wxMax(tab_height, bitmap.GetHeight());
}
// add padding
tab_width += 16;
tab_height += 10;
if (m_flags & wxAUI_NB_TAB_FIXED_WIDTH)
{
@ -627,18 +669,34 @@ int wxAuiDefaultTabArt::ShowWindowList(wxWindow* wnd,
return -1;
}
int wxAuiDefaultTabArt::GetBestTabCtrlSize(wxWindow* wnd)
int wxAuiDefaultTabArt::GetBestTabCtrlSize(wxWindow* wnd,
wxAuiNotebookPageArray& pages)
{
wxClientDC dc(wnd);
dc.SetFont(m_measuring_font);
int x_ext = 0;
wxSize s = GetTabSize(dc,
wnd,
wxT("ABCDEFGHIj"),
true,
wxAUI_BUTTON_STATE_HIDDEN,
&x_ext);
return s.y+3;
int max_y = 0;
size_t i, page_count = pages.GetCount();
for (i = 0; i < page_count; ++i)
{
wxAuiNotebookPage& page = pages.Item(i);
// we don't use the caption text because we don't
// want tab heights to be different in the case
// of a very short piece of text on one tab and a very
// tall piece of text on another tab
int x_ext = 0;
wxSize s = GetTabSize(dc,
wnd,
wxT("ABCDEFGHIj"),
page.bitmap,
true,
wxAUI_BUTTON_STATE_HIDDEN,
&x_ext);
max_y = wxMax(max_y, s.y);
}
return max_y+2;
}
void wxAuiDefaultTabArt::SetNormalFont(const wxFont& font)
@ -760,6 +818,7 @@ void wxAuiSimpleTabArt::DrawTab(wxDC& dc,
wxWindow* wnd,
const wxRect& in_rect,
const wxString& caption_text,
const wxBitmap& bitmap,
bool active,
int close_button_state,
wxRect* out_tab_rect,
@ -782,7 +841,13 @@ void wxAuiSimpleTabArt::DrawTab(wxDC& dc,
dc.GetTextExtent(caption, &normal_textx, &normal_texty);
// figure out the size of the tab
wxSize tab_size = GetTabSize(dc, wnd, caption, active, close_button_state, x_extent);
wxSize tab_size = GetTabSize(dc,
wnd,
caption,
bitmap,
active,
close_button_state,
x_extent);
wxCoord tab_height = tab_size.y;
wxCoord tab_width = tab_size.x;
@ -898,6 +963,7 @@ int wxAuiSimpleTabArt::GetIndentSize()
wxSize wxAuiSimpleTabArt::GetTabSize(wxDC& dc,
wxWindow* WXUNUSED(wnd),
const wxString& caption,
const wxBitmap& WXUNUSED(bitmap),
bool WXUNUSED(active),
int close_button_state,
int* x_extent)
@ -1040,7 +1106,8 @@ int wxAuiSimpleTabArt::ShowWindowList(wxWindow* wnd,
return -1;
}
int wxAuiSimpleTabArt::GetBestTabCtrlSize(wxWindow* wnd)
int wxAuiSimpleTabArt::GetBestTabCtrlSize(wxWindow* wnd,
wxAuiNotebookPageArray& WXUNUSED(pages))
{
wxClientDC dc(wnd);
dc.SetFont(m_measuring_font);
@ -1048,6 +1115,7 @@ int wxAuiSimpleTabArt::GetBestTabCtrlSize(wxWindow* wnd)
wxSize s = GetTabSize(dc,
wnd,
wxT("ABCDEFGHIj"),
wxNullBitmap,
true,
wxAUI_BUTTON_STATE_HIDDEN,
&x_ext);
@ -1440,6 +1508,7 @@ void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd)
wxSize size = m_art->GetTabSize(dc,
wnd,
page.caption,
page.bitmap,
page.active,
close_button ?
wxAUI_BUTTON_STATE_NORMAL :
@ -1645,6 +1714,7 @@ void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd)
wnd,
rect,
page.caption,
page.bitmap,
page.active,
tab_button.cur_state,
&page.rect,
@ -1681,6 +1751,7 @@ void wxAuiTabContainer::Render(wxDC* raw_dc, wxWindow* wnd)
wnd,
active_rect,
page.caption,
page.bitmap,
page.active,
tab_button.cur_state,
&page.rect,
@ -2263,25 +2334,44 @@ void wxAuiNotebook::SetArtProvider(wxAuiTabArt* art)
{
m_tabs.SetArtProvider(art);
// choose a default for the tab height
m_tab_ctrl_height = art->GetBestTabCtrlSize(this);
wxAuiPaneInfoArray& all_panes = m_mgr.GetAllPanes();
size_t i, pane_count = all_panes.GetCount();
for (i = 0; i < pane_count; ++i)
{
wxAuiPaneInfo& pane = all_panes.Item(i);
if (pane.name == wxT("dummy"))
continue;
wxTabFrame* tab_frame = (wxTabFrame*)pane.window;
wxAuiTabCtrl* tabctrl = tab_frame->m_tabs;
tab_frame->SetTabCtrlHeight(m_tab_ctrl_height);
tabctrl->SetArtProvider(art->Clone());
tab_frame->DoSizing();
}
SetTabCtrlHeight(CalculateTabCtrlHeight());
}
void wxAuiNotebook::SetTabCtrlHeight(int height)
{
// if the tab control height needs to change, update
// all of our tab controls with the new height
if (m_tab_ctrl_height != height)
{
wxAuiTabArt* art = m_tabs.GetArtProvider();
m_tab_ctrl_height = height;
wxAuiPaneInfoArray& all_panes = m_mgr.GetAllPanes();
size_t i, pane_count = all_panes.GetCount();
for (i = 0; i < pane_count; ++i)
{
wxAuiPaneInfo& pane = all_panes.Item(i);
if (pane.name == wxT("dummy"))
continue;
wxTabFrame* tab_frame = (wxTabFrame*)pane.window;
wxAuiTabCtrl* tabctrl = tab_frame->m_tabs;
tab_frame->SetTabCtrlHeight(m_tab_ctrl_height);
tabctrl->SetArtProvider(art->Clone());
tab_frame->DoSizing();
}
}
}
int wxAuiNotebook::CalculateTabCtrlHeight()
{
// find out new best tab height
wxAuiTabArt* art = m_tabs.GetArtProvider();
return art->GetBestTabCtrlSize(this, m_tabs.GetPages());
}
wxAuiTabArt* wxAuiNotebook::GetArtProvider()
{
return m_tabs.GetArtProvider();
@ -2347,6 +2437,7 @@ bool wxAuiNotebook::InsertPage(size_t page_idx,
else
active_tabctrl->InsertPage(page, info, page_idx);
SetTabCtrlHeight(CalculateTabCtrlHeight());
DoSizing();
active_tabctrl->DoShowHide();