many fixes to toolbar positioning code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -232,20 +232,22 @@ void wxFrame::DoSetClientSize(int width, int height)
|
|||||||
wxPoint pt = GetClientAreaOrigin();
|
wxPoint pt = GetClientAreaOrigin();
|
||||||
width += pt.x;
|
width += pt.x;
|
||||||
height += pt.y;
|
height += pt.y;
|
||||||
|
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
if ( width )
|
wxToolBar * const toolbar = GetToolBar();
|
||||||
|
if ( toolbar )
|
||||||
{
|
{
|
||||||
wxToolBar *toolbar = GetToolBar();
|
if ( toolbar->HasFlag(wxTB_RIGHT | wxTB_BOTTOM) )
|
||||||
if ( toolbar && toolbar->HasFlag(wxTB_RIGHT) )
|
|
||||||
{
|
{
|
||||||
width -= toolbar->GetClientSize().x;
|
const wxSize sizeTB = toolbar->GetSize();
|
||||||
}
|
if ( toolbar->HasFlag(wxTB_RIGHT) )
|
||||||
if ( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
|
width -= sizeTB.x;
|
||||||
{
|
else // wxTB_BOTTOM
|
||||||
height -= toolbar->GetClientSize().y;
|
height -= sizeTB.y;
|
||||||
}
|
}
|
||||||
|
//else: toolbar already taken into account by GetClientAreaOrigin()
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_TOOLBAR
|
||||||
|
|
||||||
wxTopLevelWindow::DoSetClientSize(width, height);
|
wxTopLevelWindow::DoSetClientSize(width, height);
|
||||||
}
|
}
|
||||||
@@ -262,24 +264,29 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
|
|||||||
|
|
||||||
if ( y )
|
if ( y )
|
||||||
*y -= pt.y;
|
*y -= pt.y;
|
||||||
|
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
if( y )
|
wxToolBar * const toolbar = GetToolBar();
|
||||||
|
if ( toolbar )
|
||||||
{
|
{
|
||||||
wxToolBar *toolbar = GetToolBar();
|
if ( toolbar->HasFlag(wxTB_RIGHT | wxTB_BOTTOM) )
|
||||||
if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
|
|
||||||
{
|
{
|
||||||
*y -= toolbar->GetClientSize().y;
|
const wxSize sizeTB = toolbar->GetSize();
|
||||||
|
if ( toolbar->HasFlag(wxTB_RIGHT) )
|
||||||
|
{
|
||||||
|
if ( x )
|
||||||
|
*x -= sizeTB.x;
|
||||||
|
}
|
||||||
|
else // wxTB_BOTTOM
|
||||||
|
{
|
||||||
|
if ( y )
|
||||||
|
*y -= sizeTB.y;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
//else: toolbar already taken into account by GetClientAreaOrigin()
|
||||||
}
|
}
|
||||||
if ( x )
|
#endif // wxUSE_TOOLBAR
|
||||||
{
|
|
||||||
wxToolBar *toolbar = GetToolBar();
|
|
||||||
if ( toolbar && toolbar->HasFlag(wxTB_RIGHT) )
|
|
||||||
{
|
|
||||||
*x -= toolbar->GetClientSize().x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
// adjust client area height to take the status bar into account
|
// adjust client area height to take the status bar into account
|
||||||
if ( y )
|
if ( y )
|
||||||
@@ -346,13 +353,7 @@ void wxFrame::PositionStatusBar()
|
|||||||
|
|
||||||
int w, h;
|
int w, h;
|
||||||
GetClientSize(&w, &h);
|
GetClientSize(&w, &h);
|
||||||
#if wxUSE_TOOLBAR
|
|
||||||
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;
|
int sw, sh;
|
||||||
m_frameStatusBar->GetSize(&sw, &sh);
|
m_frameStatusBar->GetSize(&sw, &sh);
|
||||||
|
|
||||||
@@ -360,6 +361,7 @@ void wxFrame::PositionStatusBar()
|
|||||||
// we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
|
// we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
|
||||||
m_frameStatusBar->SetSize(0, h, w, sh);
|
m_frameStatusBar->SetSize(0, h, w, sh);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
#if wxUSE_MENUS_NATIVE
|
#if wxUSE_MENUS_NATIVE
|
||||||
@@ -620,24 +622,27 @@ void wxFrame::PositionToolBar()
|
|||||||
height -= statbar->GetClientSize().y;
|
height -= statbar->GetClientSize().y;
|
||||||
}
|
}
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
int tx, ty, tw, th;
|
|
||||||
toolbar->GetPosition( &tx, &ty );
|
int tx, ty, tw, th;
|
||||||
toolbar->GetSize( &tw, &th );
|
toolbar->GetPosition( &tx, &ty );
|
||||||
if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) )
|
toolbar->GetSize( &tw, &th );
|
||||||
{
|
|
||||||
x = 0;
|
if ( toolbar->HasFlag(wxTB_BOTTOM) )
|
||||||
y = 0;
|
{
|
||||||
}
|
x = 0;
|
||||||
else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM )
|
y = height - th;
|
||||||
{
|
}
|
||||||
x = 0;
|
else if ( toolbar->HasFlag(wxTB_RIGHT) )
|
||||||
y = height - th;
|
{
|
||||||
}
|
x = width - tw;
|
||||||
else if( toolbar->HasFlag(wxTB_RIGHT) )
|
y = 0;
|
||||||
{
|
}
|
||||||
x = width - tw;
|
else // left or top
|
||||||
y = 0;
|
{
|
||||||
}
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(WINCE_WITH_COMMANDBAR)
|
#if defined(WINCE_WITH_COMMANDBAR)
|
||||||
// We're using a commandbar - so we have to allow for it.
|
// We're using a commandbar - so we have to allow for it.
|
||||||
if (GetMenuBar() && GetMenuBar()->GetCommandBar())
|
if (GetMenuBar() && GetMenuBar()->GetCommandBar())
|
||||||
@@ -646,29 +651,29 @@ void wxFrame::PositionToolBar()
|
|||||||
::GetWindowRect((HWND) GetMenuBar()->GetCommandBar(), &rect);
|
::GetWindowRect((HWND) GetMenuBar()->GetCommandBar(), &rect);
|
||||||
y = rect.bottom - rect.top;
|
y = rect.bottom - rect.top;
|
||||||
}
|
}
|
||||||
#endif
|
#endif // WINCE_WITH_COMMANDBAR
|
||||||
if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) )
|
|
||||||
{
|
if ( toolbar->HasFlag(wxTB_BOTTOM) )
|
||||||
// Adjust
|
{
|
||||||
if (ty < 0 && (-ty == th))
|
if ( ty < 0 && ( -ty == th ) )
|
||||||
ty = 0;
|
ty = height - th;
|
||||||
if (tx < 0 && (-tx == tw))
|
if ( tx < 0 && (-tx == tw ) )
|
||||||
tx = 0;
|
tx = 0;
|
||||||
}
|
}
|
||||||
else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM )
|
else if ( toolbar->HasFlag(wxTB_RIGHT) )
|
||||||
{
|
|
||||||
if( ty < 0 && ( -ty == th ) )
|
|
||||||
ty = height - th;
|
|
||||||
if( tx < 0 && ( -tx == tw ) )
|
|
||||||
tx = 0;
|
|
||||||
}
|
|
||||||
else if( toolbar->HasFlag(wxTB_RIGHT) )
|
|
||||||
{
|
{
|
||||||
if( ty < 0 && ( -ty == th ) )
|
if( ty < 0 && ( -ty == th ) )
|
||||||
ty = 0;
|
ty = 0;
|
||||||
if( tx < 0 && ( -tx == tw ) )
|
if( tx < 0 && ( -tx == tw ) )
|
||||||
tx = width - tw;
|
tx = width - tw;
|
||||||
}
|
}
|
||||||
|
else // left or top
|
||||||
|
{
|
||||||
|
if (ty < 0 && (-ty == th))
|
||||||
|
ty = 0;
|
||||||
|
if (tx < 0 && (-tx == tw))
|
||||||
|
tx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
int desiredW = tw;
|
int desiredW = tw;
|
||||||
int desiredH = th;
|
int desiredH = th;
|
||||||
@@ -680,8 +685,6 @@ void wxFrame::PositionToolBar()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
desiredW = width;
|
desiredW = width;
|
||||||
// if ( toolbar->GetWindowStyleFlag() & wxTB_FLAT )
|
|
||||||
// desiredW -= 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// use the 'real' MSW position here, don't offset relativly to the
|
// use the 'real' MSW position here, don't offset relativly to the
|
||||||
@@ -1110,19 +1113,18 @@ wxPoint wxFrame::GetClientAreaOrigin() const
|
|||||||
|
|
||||||
#if wxUSE_TOOLBAR && !defined(__WXUNIVERSAL__) && \
|
#if wxUSE_TOOLBAR && !defined(__WXUNIVERSAL__) && \
|
||||||
(!defined(__WXWINCE__) || (_WIN32_WCE >= 400 && !defined(__POCKETPC__) && !defined(__SMARTPHONE__)))
|
(!defined(__WXWINCE__) || (_WIN32_WCE >= 400 && !defined(__POCKETPC__) && !defined(__SMARTPHONE__)))
|
||||||
wxToolBar *toolbar = GetToolBar();
|
wxToolBar * const toolbar = GetToolBar();
|
||||||
if ( toolbar && toolbar->IsShown() )
|
if ( toolbar && toolbar->IsShown() )
|
||||||
{
|
{
|
||||||
int w, h;
|
const wxSize sizeTB = toolbar->GetSize();
|
||||||
toolbar->GetSize(&w, &h);
|
|
||||||
|
|
||||||
if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL )
|
if ( toolbar->HasFlag(wxTB_TOP) )
|
||||||
{
|
{
|
||||||
pt.x += w;
|
pt.y += sizeTB.y;
|
||||||
}
|
}
|
||||||
else if( ( toolbar->GetWindowStyleFlag() & wxTB_TOP ) )
|
else if ( toolbar->HasFlag(wxTB_LEFT) )
|
||||||
{
|
{
|
||||||
pt.y += h;
|
pt.x += sizeTB.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // wxUSE_TOOLBAR
|
#endif // wxUSE_TOOLBAR
|
||||||
|
Reference in New Issue
Block a user