Fixed conflicts with Robert's similar fixes; fixed toolbar size calculation
and allowed for vertical toolbar git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
d1017acfc3
commit
16c9a4258f
@ -101,9 +101,10 @@ protected:
|
||||
const wxString& shortHelpString,
|
||||
const wxString& longHelpString);
|
||||
virtual wxToolBarToolBase *CreateTool(wxControl *control);
|
||||
|
||||
|
||||
private:
|
||||
wxToolBarTool *m_captured;
|
||||
wxCoord m_maxWidth, m_maxHeight;
|
||||
|
||||
private:
|
||||
void OnMouse( wxMouseEvent &event );
|
||||
|
@ -297,7 +297,7 @@ void MyFrame::RecreateToolbar()
|
||||
toolBar->AddTool(wxID_OPEN, toolBarBitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file");
|
||||
|
||||
// neither the generic nor Motif native toolbars really support this
|
||||
#if (wxUSE_TOOLBAR_NATIVE && !USE_GENERIC_TBAR) && !defined(__WXMOTIF__)
|
||||
#if (wxUSE_TOOLBAR_NATIVE && !USE_GENERIC_TBAR) && !defined(__WXMOTIF__) && !defined(__WXX11__)
|
||||
// adding a combo to a vertical toolbar is not very smart
|
||||
if ( m_horzToolbar )
|
||||
{
|
||||
|
@ -152,7 +152,7 @@ wxPoint wxFrameBase::GetClientAreaOrigin() const
|
||||
{
|
||||
wxPoint pt = wxTopLevelWindow::GetClientAreaOrigin();
|
||||
|
||||
#if wxUSE_TOOLBAR
|
||||
#if wxUSE_TOOLBAR && !defined(__WXUNIVERSAL__)
|
||||
wxToolBar *toolbar = GetToolBar();
|
||||
if ( toolbar && toolbar->IsShown() )
|
||||
{
|
||||
|
@ -96,18 +96,17 @@ void wxFrame::PositionMenuBar()
|
||||
// the menubar is positioned above the client size, hence the negative
|
||||
// y coord
|
||||
wxCoord heightMbar = m_frameMenuBar->GetSize().y;
|
||||
|
||||
|
||||
wxCoord heightTbar = 0;
|
||||
// In between sits the toolbar
|
||||
if (m_frameToolBar)
|
||||
heightTbar = m_frameToolBar->GetSize().y;
|
||||
|
||||
m_frameMenuBar->SetSize(0,
|
||||
#ifdef __WXPM__ // FIXME -- remove this, make wxOS2/Univ behave as
|
||||
// the rest of the world!!!
|
||||
GetClientSize().y - heightMbar,
|
||||
GetClientSize().y - heightMbar - heightTbar,
|
||||
#else
|
||||
- heightMbar - heightTbar,
|
||||
- (heightMbar + heightTbar),
|
||||
#endif
|
||||
GetClientSize().x, heightMbar);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ END_EVENT_TABLE()
|
||||
bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style, const wxString& name )
|
||||
{
|
||||
{
|
||||
bool ret = wxToolBarBase::Create( parent, id, pos, size, style, wxDefaultValidator, name );
|
||||
|
||||
return ret;
|
||||
@ -54,8 +54,18 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
|
||||
|
||||
void wxToolBar::Init()
|
||||
{
|
||||
// TODO: this is from tbarbase.cpp, but should be in
|
||||
// wxToolbarBase::Init
|
||||
// the list owns the pointers
|
||||
m_tools.DeleteContents(TRUE);
|
||||
m_xMargin = m_yMargin = 0;
|
||||
m_maxRows = m_maxCols = 0;
|
||||
// End TODO
|
||||
|
||||
m_maxWidth = 0;
|
||||
m_maxHeight = 0;
|
||||
|
||||
m_captured = NULL;
|
||||
|
||||
SetToolBitmapSize( wxSize(16,15) );
|
||||
}
|
||||
|
||||
@ -186,7 +196,19 @@ bool wxToolBar::Realize()
|
||||
if (!wxToolBarBase::Realize())
|
||||
return FALSE;
|
||||
|
||||
int x = 5;
|
||||
int x;
|
||||
int y;
|
||||
|
||||
if (GetWindowStyleFlag() & wxTB_VERTICAL)
|
||||
{
|
||||
x = m_xMargin;
|
||||
y = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
y = m_yMargin;
|
||||
x = 5;
|
||||
}
|
||||
|
||||
for ( wxToolBarToolsList::Node *node = m_tools.GetFirst();
|
||||
node;
|
||||
@ -194,15 +216,53 @@ bool wxToolBar::Realize()
|
||||
{
|
||||
wxToolBarTool *tool = (wxToolBarTool*) node->Data();
|
||||
|
||||
if (tool->GetId() == -1)
|
||||
if (GetWindowStyleFlag() & wxTB_VERTICAL)
|
||||
{
|
||||
x += 6;
|
||||
continue;
|
||||
if (tool->GetId() == -1)
|
||||
{
|
||||
y += 6;
|
||||
continue;
|
||||
}
|
||||
tool->m_x = m_xMargin;
|
||||
tool->m_y = y;
|
||||
y += m_defaultHeight + 6;
|
||||
|
||||
// Calculate the maximum height or width (depending on style)
|
||||
// so we know how to size the toolbar in Realize.
|
||||
// We could get the size of the tool instead of the
|
||||
// default bitmap size
|
||||
if (m_maxWidth < (m_defaultWidth + 2*(m_xMargin + 2)))
|
||||
m_maxWidth = (m_defaultWidth + 2*(m_xMargin + 2)) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tool->GetId() == -1)
|
||||
{
|
||||
x += 6;
|
||||
continue;
|
||||
}
|
||||
tool->m_x = x;
|
||||
tool->m_y = m_yMargin;
|
||||
x += m_defaultWidth + 6;
|
||||
|
||||
// Calculate the maximum height or width (depending on style)
|
||||
// so we know how to size the toolbar in Realize.
|
||||
// We could get the size of the tool instead of the
|
||||
// default bitmap size
|
||||
if (m_maxHeight < (m_defaultHeight + 2*(m_yMargin + 2)))
|
||||
m_maxHeight = (m_defaultHeight + 2*(m_yMargin + 2)) ;
|
||||
}
|
||||
|
||||
tool->m_x = x;
|
||||
tool->m_y = 4;
|
||||
x += m_defaultWidth + 6;
|
||||
}
|
||||
|
||||
wxSize sz = GetSize();
|
||||
if (GetWindowStyleFlag() & wxTB_VERTICAL)
|
||||
{
|
||||
SetSize(m_maxWidth, sz.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetSize(sz.x, m_maxHeight);
|
||||
}
|
||||
|
||||
SetSize( x+16, m_defaultHeight + 14 );
|
||||
|
Loading…
Reference in New Issue
Block a user