wxToolBar support in wxUniv/wxFrame

(well, sort of --  with wxToolBarSimple only and it looks really weird. I don't know
 yet if it is my fault or wxTBSimple's...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2001-11-24 23:59:44 +00:00
parent 857dab7dcd
commit 443aec6f41

View File

@ -32,6 +32,7 @@
#ifndef WX_PRECOMP
#include "wx/frame.h"
#include "wx/statusbr.h"
#include "wx/toolbar.h"
#endif // WX_PRECOMP
// ============================================================================
@ -72,6 +73,9 @@ void wxFrame::OnSize(wxSizeEvent& event)
#if wxUSE_STATUSBAR
PositionStatusBar();
#endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR
PositionToolBar();
#endif // wxUSE_TOOLBAR
event.Skip();
}
@ -93,7 +97,8 @@ void wxFrame::PositionMenuBar()
// y coord
wxCoord heightMbar = m_frameMenuBar->GetSize().y;
m_frameMenuBar->SetSize(0,
#ifdef __WXPM__
#ifdef __WXPM__ // FIXME -- remove this, make wxOS2/Univ behave as
// the rest of the world!!!
GetClientSize().y - heightMbar,
#else
-heightMbar,
@ -137,6 +142,43 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, long style,
#endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR
wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
{
if ( wxFrameBase::CreateToolBar(style, id, name) )
{
PositionToolBar();
}
return m_frameToolBar;
}
void wxFrame::PositionToolBar()
{
if ( m_frameToolBar )
{
wxSize size = GetClientSize();
int tw, th, tx, ty;
tx = ty = 0;
m_frameToolBar->GetSize(&tw, &th);
if ( m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL )
{
tx = -tw;
th = size.y;
}
else
{
ty = -th;
tw = size.x;
}
m_frameToolBar->SetSize(tx, ty, tw, th);
}
}
#endif // wxUSE_TOOLBAR
wxPoint wxFrame::GetClientAreaOrigin() const
{
wxPoint pt = wxFrameBase::GetClientAreaOrigin();
@ -148,6 +190,16 @@ wxPoint wxFrame::GetClientAreaOrigin() const
}
#endif // wxUSE_MENUS
#if wxUSE_TOOLBAR
if ( m_frameToolBar )
{
if ( m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL )
pt.x += m_frameToolBar->GetSize().x;
else
pt.y += m_frameToolBar->GetSize().y;
}
#endif // wxUSE_TOOLBAR
return pt;
}
@ -168,6 +220,16 @@ void wxFrame::DoGetClientSize(int *width, int *height) const
(*height) -= m_frameStatusBar->GetSize().y;
}
#endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR
if ( m_frameToolBar )
{
if ( width && (m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL) )
(*width) -= m_frameToolBar->GetSize().x;
else if ( height )
(*height) -= m_frameToolBar->GetSize().y;
}
#endif // wxUSE_TOOLBAR
}
void wxFrame::DoSetClientSize(int width, int height)
@ -186,6 +248,18 @@ void wxFrame::DoSetClientSize(int width, int height)
}
#endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR
if ( m_frameToolBar )
{
height += m_frameStatusBar->GetSize().y;
if ( m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL )
width += m_frameToolBar->GetSize().x;
else
height += m_frameToolBar->GetSize().y;
}
#endif // wxUSE_TOOLBAR
wxFrameBase::DoSetClientSize(width, height);
}