]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed conflicts with Robert's similar fixes; fixed toolbar size calculation
authorJulian Smart <julian@anthemion.co.uk>
Sun, 24 Feb 2002 23:04:46 +0000 (23:04 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 24 Feb 2002 23:04:46 +0000 (23:04 +0000)
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
samples/toolbar/toolbar.cpp
src/common/framecmn.cpp
src/univ/framuniv.cpp
src/univ/toolbar.cpp

index ac130e9feb8db7bd8abfbe7f3c45792029f87661..ff08ce21c0c8d9481fc4b78c365f3f74c0a9e403 100644 (file)
@@ -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 );
index 8ec29ca590e3830844b5a1ec8d672ce26e531133..ef074307f894e1dcfe663ed80b287463a1b894b5 100644 (file)
@@ -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 )
     {
index 8bc2ffb5db650f512cc7343be534c2789b90109d..4bcb11d5d075b0ae723c4225225ec1c31dce51c2 100644 (file)
@@ -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() )
     {
index 9e9729670098a5ee77ff37eac0a33356683baae3..5ee90213f6bf01d01da5ac5a9d2d258db4e28a9b 100644 (file)
@@ -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);
     }
index 298810816775d40becd5e107dc1a46ea92c2782f..0731cd04fd3abc0758d0f1641e97ece8bf860e7b 100644 (file)
@@ -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 );