Fix border size computation in wxAuiTabArt.
Space was reserved for the borders even when it wasn't filled, resulting in visual artefacts. Fix this by virtualizing the function returning the additional space needed for the borders and only overriding it to return non zero in wxAuiGtkTabArt. Closes #14710. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
fe24e4e9c2
commit
1e30d94eff
@ -103,6 +103,9 @@ public:
|
||||
virtual int GetBorderWidth(
|
||||
wxWindow* wnd) = 0;
|
||||
|
||||
virtual int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd) = 0;
|
||||
|
||||
virtual int GetBestTabCtrlSize(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
@ -162,6 +165,9 @@ public:
|
||||
int GetBorderWidth(
|
||||
wxWindow* wnd);
|
||||
|
||||
int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd);
|
||||
|
||||
wxSize GetTabSize(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
@ -258,6 +264,9 @@ public:
|
||||
int GetBorderWidth(
|
||||
wxWindow* wnd);
|
||||
|
||||
int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd);
|
||||
|
||||
wxSize GetTabSize(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
|
@ -48,6 +48,7 @@ public:
|
||||
int GetBestTabCtrlSize(wxWindow* wnd, const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& required_bmp_size);
|
||||
int GetBorderWidth(wxWindow* wnd);
|
||||
int GetAdditionalBorderSpace(wxWindow* wnd);
|
||||
virtual wxSize GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption,
|
||||
const wxBitmap& bitmap, bool active,
|
||||
int close_button_state, int* x_extent);
|
||||
|
@ -1544,9 +1544,9 @@ public:
|
||||
for (i = 0; i < page_count; ++i)
|
||||
{
|
||||
wxAuiNotebookPage& page = pages.Item(i);
|
||||
int border_width = m_tabs->GetArtProvider()->GetBorderWidth(page.window);
|
||||
int border_space = m_tabs->GetArtProvider()->GetAdditionalBorderSpace(page.window);
|
||||
|
||||
int height = m_rect.height - m_tabCtrlHeight - border_width;
|
||||
int height = m_rect.height - m_tabCtrlHeight - border_space;
|
||||
if ( height < 0 )
|
||||
{
|
||||
// avoid passing negative height to wxWindow::SetSize(), this
|
||||
@ -1556,16 +1556,16 @@ public:
|
||||
|
||||
if (m_tabs->GetFlags() & wxAUI_NB_BOTTOM)
|
||||
{
|
||||
page.window->SetSize(m_rect.x + 2 * border_width,
|
||||
m_rect.y + 2 * border_width,
|
||||
m_rect.width - 4 * border_width,
|
||||
page.window->SetSize(m_rect.x + border_space,
|
||||
m_rect.y + border_space,
|
||||
m_rect.width - 2 * border_space,
|
||||
height);
|
||||
}
|
||||
else //TODO: if (GetFlags() & wxAUI_NB_TOP)
|
||||
{
|
||||
page.window->SetSize(m_rect.x + 2 * border_width,
|
||||
page.window->SetSize(m_rect.x + border_space,
|
||||
m_rect.y + m_tabCtrlHeight,
|
||||
m_rect.width - 4 * border_width,
|
||||
m_rect.width - 2 * border_space,
|
||||
height);
|
||||
}
|
||||
// TODO: else if (GetFlags() & wxAUI_NB_LEFT){}
|
||||
|
@ -610,6 +610,11 @@ int wxAuiGenericTabArt::GetBorderWidth(wxWindow* wnd)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int wxAuiGenericTabArt::GetAdditionalBorderSpace(wxWindow* WXUNUSED(wnd))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxSize wxAuiGenericTabArt::GetTabSize(wxDC& dc,
|
||||
wxWindow* WXUNUSED(wnd),
|
||||
const wxString& caption,
|
||||
@ -1137,6 +1142,11 @@ int wxAuiSimpleTabArt::GetBorderWidth(wxWindow* wnd)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int wxAuiSimpleTabArt::GetAdditionalBorderSpace(wxWindow* WXUNUSED(wnd))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxSize wxAuiSimpleTabArt::GetTabSize(wxDC& dc,
|
||||
wxWindow* WXUNUSED(wnd),
|
||||
const wxString& caption,
|
||||
|
@ -487,6 +487,11 @@ int wxAuiGtkTabArt::GetBorderWidth(wxWindow* wnd)
|
||||
GTK_NOTEBOOK (wxGTKPrivate::GetNotebookWidget())->tab_vborder);
|
||||
}
|
||||
|
||||
int wxAuiGtkTabArt::GetAdditionalBorderSpace(wxWindow* wnd)
|
||||
{
|
||||
return 2 * GetBorderWidth(wnd);
|
||||
}
|
||||
|
||||
wxSize wxAuiGtkTabArt::GetTabSize(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
|
Loading…
Reference in New Issue
Block a user