added wxTB_RIGHT style for right-aligned toolbars (slightly modified patch 1567469)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42645 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-10-29 19:12:52 +00:00
parent 3af706cc31
commit 7a9763046b
8 changed files with 137 additions and 56 deletions

View File

@@ -232,6 +232,20 @@ void wxFrame::DoSetClientSize(int width, int height)
wxPoint pt = GetClientAreaOrigin();
width += pt.x;
height += pt.y;
#if wxUSE_TOOLBAR
if ( width )
{
wxToolBar *toolbar = GetToolBar();
if ( toolbar && toolbar->HasFlag(wxTB_RIGHT) )
{
width -= toolbar->GetClientSize().x;
}
if ( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
{
height -= toolbar->GetClientSize().y;
}
}
#endif
wxTopLevelWindow::DoSetClientSize(width, height);
}
@@ -257,6 +271,14 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
*y -= toolbar->GetClientSize().y;
}
}
if ( x )
{
wxToolBar *toolbar = GetToolBar();
if ( toolbar && toolbar->HasFlag(wxTB_RIGHT) )
{
*x -= toolbar->GetClientSize().x;
}
}
#endif
#if wxUSE_STATUSBAR
// adjust client area height to take the status bar into account
@@ -328,6 +350,8 @@ void wxFrame::PositionStatusBar()
wxToolBar *toolbar = GetToolBar();
if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
h += toolbar->GetClientRect().height;
if( toolbar && toolbar->HasFlag( wxTB_RIGHT ) )
w += toolbar->GetClientRect().width;
#endif
int sw, sh;
m_frameStatusBar->GetSize(&sw, &sh);
@@ -609,6 +633,11 @@ void wxFrame::PositionToolBar()
x = 0;
y = height - th;
}
else if( toolbar->HasFlag(wxTB_RIGHT) )
{
x = width - tw;
y = 0;
}
#if defined(WINCE_WITH_COMMANDBAR)
// We're using a commandbar - so we have to allow for it.
if (GetMenuBar() && GetMenuBar()->GetCommandBar())
@@ -633,11 +662,18 @@ void wxFrame::PositionToolBar()
if( tx < 0 && ( -tx == tw ) )
tx = 0;
}
else if( toolbar->HasFlag(wxTB_RIGHT) )
{
if( ty < 0 && ( -ty == th ) )
ty = 0;
if( tx < 0 && ( -tx == tw ) )
tx = width - tw;
}
int desiredW = tw;
int desiredH = th;
if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL )
if ( toolbar->IsVertical() )
{
desiredH = height;
}
@@ -656,7 +692,7 @@ void wxFrame::PositionToolBar()
bool heightChanging wxDUMMY_INITIALIZE(true);
bool widthChanging wxDUMMY_INITIALIZE(true);
if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL )
if ( toolbar->IsVertical() )
{
// It's OK if the current height is greater than what can be shown.
heightChanging = (desiredH > th) ;
@@ -1084,7 +1120,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const
{
pt.x += w;
}
else if( !( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM ) )
else if( ( toolbar->GetWindowStyleFlag() & wxTB_TOP ) )
{
pt.y += h;
}