From 16c9a4258f33da3a3a6c14bec9d1b239f2c93edd Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Sun, 24 Feb 2002 23:04:46 +0000 Subject: [PATCH] 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 --- include/wx/univ/toolbar.h | 3 +- samples/toolbar/toolbar.cpp | 2 +- src/common/framecmn.cpp | 2 +- src/univ/framuniv.cpp | 7 ++-- src/univ/toolbar.cpp | 78 ++++++++++++++++++++++++++++++++----- 5 files changed, 76 insertions(+), 16 deletions(-) diff --git a/include/wx/univ/toolbar.h b/include/wx/univ/toolbar.h index ac130e9feb..ff08ce21c0 100644 --- a/include/wx/univ/toolbar.h +++ b/include/wx/univ/toolbar.h @@ -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 ); diff --git a/samples/toolbar/toolbar.cpp b/samples/toolbar/toolbar.cpp index 8ec29ca590..ef074307f8 100644 --- a/samples/toolbar/toolbar.cpp +++ b/samples/toolbar/toolbar.cpp @@ -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 ) { diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 8bc2ffb5db..4bcb11d5d0 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -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() ) { diff --git a/src/univ/framuniv.cpp b/src/univ/framuniv.cpp index 9e97296700..5ee90213f6 100644 --- a/src/univ/framuniv.cpp +++ b/src/univ/framuniv.cpp @@ -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); } diff --git a/src/univ/toolbar.cpp b/src/univ/toolbar.cpp index 2988108167..0731cd04fd 100644 --- a/src/univ/toolbar.cpp +++ b/src/univ/toolbar.cpp @@ -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 ); -- 2.47.2