]> git.saurik.com Git - wxWidgets.git/commitdiff
adjust the toolbar tools bitmap size to fit the biggest bitmap used under wxOSX too...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Jun 2009 10:21:18 +0000 (10:21 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Jun 2009 10:21:18 +0000 (10:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/tbarbase.h
src/common/tbarbase.cpp
src/msw/toolbar.cpp
src/osx/carbon/toolbar.cpp
src/osx/cocoa/toolbar.mm

index d13bf223332271030622726b9d1eedeacec77ec7..cc367e41bb69f6a5ae65e4201aa047793ba1d666 100644 (file)
@@ -361,6 +361,9 @@ public:
 
     // must be called after all buttons have been created to finish toolbar
     // initialisation
+    //
+    // derived class versions should call the base one first, before doing
+    // platform-specific stuff
     virtual bool Realize();
 
     // tools state
@@ -602,6 +605,10 @@ protected:
     // un-toggle all buttons in the same radio group
     void UnToggleRadioGroup(wxToolBarToolBase *tool);
 
+    // make the size of the buttons big enough to fit the largest bitmap size
+    void AdjustToolBitmapSize();
+
+
     // the list of all our tools
     wxToolBarToolsList m_tools;
 
index 97fe65f63142988dcc7a132be923b9948e0f51d8..a43e8a0b1d9c27a4add7d8c623502461b5505bc6 100644 (file)
@@ -446,8 +446,35 @@ void wxToolBarBase::ClearTools()
     }
 }
 
+void wxToolBarBase::AdjustToolBitmapSize()
+{
+    const wxSize sizeOrig(m_defaultWidth, m_defaultHeight);
+
+    wxSize sizeActual(sizeOrig);
+
+    for ( wxToolBarToolsList::const_iterator i = m_tools.begin();
+          i != m_tools.end();
+          ++i )
+    {
+        const wxBitmap& bmp = (*i)->GetNormalBitmap();
+        if ( bmp.IsOk() )
+            sizeActual.IncTo(bmp.GetSize());
+    }
+
+    if ( sizeActual != sizeOrig )
+        SetToolBitmapSize(sizeActual);
+}
+
 bool wxToolBarBase::Realize()
 {
+    // check if we have anything to do
+    if ( m_tools.empty() )
+        return false;
+
+    // make sure tool size is larger enough for all all bitmaps to fit in
+    // (this is consistent with what other ports do):
+    AdjustToolBitmapSize();
+
     return true;
 }
 
index 75630f870d31684a6fbeab6f95562a038d6cef58..24eeac71988342a5a6510cfb67ca7cc2050c6db7 100644 (file)
@@ -286,7 +286,7 @@ void wxToolBar::Init()
     // 32*32) size for their bitmaps, the native control itself still uses the
     // old 16*15 default size (see TB_SETBITMAPSIZE documentation in MSDN), so
     // default to it so that we don't call SetToolBitmapSize() unnecessarily in
-    // AdjustToolBitmapSize()
+    // wxToolBarBase::AdjustToolBitmapSize()
     m_defaultWidth = 16;
     m_defaultHeight = 15;
 
@@ -634,34 +634,12 @@ void wxToolBar::CreateDisabledImageList()
     }
 }
 
-void wxToolBar::AdjustToolBitmapSize()
-{
-    const wxSize sizeOrig(m_defaultWidth, m_defaultHeight);
-
-    wxSize sizeActual(sizeOrig);
-
-    for ( wxToolBarToolsList::const_iterator i = m_tools.begin();
-          i != m_tools.end();
-          ++i )
-    {
-        const wxBitmap& bmp = (*i)->GetNormalBitmap();
-        sizeActual.IncTo(bmp.GetSize());
-    }
-
-    if ( sizeActual != sizeOrig )
-        SetToolBitmapSize(sizeActual);
-}
-
 bool wxToolBar::Realize()
 {
-    const size_t nTools = GetToolsCount();
-    if ( nTools == 0 )
-        // nothing to do
-        return true;
+    if ( !wxToolBarBase::Realize() )
+        return false;
 
-    // make sure tool size is larger enough for all all bitmaps to fit in
-    // (this is consistent with what other ports do):
-    AdjustToolBitmapSize();
+    const size_t nTools = GetToolsCount();
 
 #ifdef wxREMAP_BUTTON_COLOURS
     // don't change the values of these constants, they can be set from the
index 1a8fe6112e660b34189a700d3b4ee07fc0f8441b..bccc29b4e7d70cb4066fbbcc4e1437e6d404f115 100644 (file)
@@ -167,14 +167,14 @@ public:
     {
         if ( wxToolBarToolBase::Toggle( toggle ) == false )
             return false;
-            
+
         UpdateToggleImage(toggle);
         return true;
     }
-    
+
     void UpdateHelpStrings()
     {
-#if wxOSX_USE_NATIVE_TOOLBAR            
+#if wxOSX_USE_NATIVE_TOOLBAR
         if ( m_toolbarItemRef )
         {
             wxFontEncoding enc = GetToolBarFontEncoding();
@@ -186,16 +186,16 @@ public:
         }
 #endif
     }
-    
+
     virtual bool SetShortHelp(const wxString& help)
     {
         if ( wxToolBarToolBase::SetShortHelp( help ) == false )
             return false;
-            
-        UpdateHelpStrings();        
+
+        UpdateHelpStrings();
         return true;
     }
-    
+
     virtual bool SetLongHelp(const wxString& help)
     {
         if ( wxToolBarToolBase::SetLongHelp( help ) == false )
@@ -205,12 +205,12 @@ public:
         return true;
     }
 
-    virtual void SetNormalBitmap(const wxBitmap& bmp) 
+    virtual void SetNormalBitmap(const wxBitmap& bmp)
     {
         wxToolBarToolBase::SetNormalBitmap(bmp);
         UpdateToggleImage(CanBeToggled() && IsToggled());
     }
-        
+
     virtual void SetLabel(const wxString& label)
     {
         wxToolBarToolBase::SetLabel(label);
@@ -429,7 +429,7 @@ bool wxToolBarTool::Enable( bool enable )
 {
     if ( wxToolBarToolBase::Enable( enable ) == false )
         return false;
-    
+
     if ( IsControl() )
     {
         GetControl()->Enable( enable );
@@ -1108,18 +1108,18 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
             bResult = true;
 
             SetWindowToolbar( tlw, (HIToolbarRef) m_macToolbar );
-            
+
             // ShowHideWindowToolbar will make the wxFrame grow
             // which we don't want in this case
             wxSize sz = GetParent()->GetSize();
             ShowHideWindowToolbar( tlw, true, false );
             // Restore the orginal size
             GetParent()->SetSize( sz );
-            
+
             ChangeWindowAttributes( tlw, kWindowToolbarButtonAttribute, 0 );
-            
+
             SetAutomaticControlDragTrackingEnabledForWindow( tlw, true );
-    
+
             m_peer->Move(0,0,0,0 );
             SetSize( wxSIZE_AUTO_WIDTH, 0 );
             m_peer->SetVisibility( false );
@@ -1151,9 +1151,9 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
 
 bool wxToolBar::Realize()
 {
-    if (m_tools.GetCount() == 0)
+    if ( !wxToolBarBase::Realize() )
         return false;
-    
+
     wxSize tlw_sz = GetParent()->GetSize();
 
     int maxWidth = 0;
@@ -1365,7 +1365,7 @@ bool wxToolBar::Realize()
 
     if (m_macUsesNativeToolbar)
         GetParent()->SetSize( tlw_sz );
-    
+
     if ( GetWindowStyleFlag() &  (wxTB_TOP|wxTB_BOTTOM) )
     {
         // if not set yet, only one row
index f02306785f321da92d4d2cc3bb6db90b62b26731..8c1c416088eec21575389c8ff5c9a6df28bb355c 100644 (file)
@@ -839,7 +839,7 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
 
 bool wxToolBar::Realize()
 {
-    if (m_tools.GetCount() == 0)
+    if ( !wxToolBarBase::Realize() )
         return false;
 
     int maxWidth = 0;