]> git.saurik.com Git - wxWidgets.git/commitdiff
no real changes, just remove unnecessary code; use wxScopedArray instead of raw one
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 31 Jan 2009 14:04:23 +0000 (14:04 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 31 Jan 2009 14:04:23 +0000 (14:04 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/toolbar.h
src/msw/toolbar.cpp

index 7a689eba01d401d620a3986988096f3314a078ee..5e9c3e32b103706e3bb87eb9c846c84b4501194c 100644 (file)
@@ -88,6 +88,9 @@ protected:
     // create the native toolbar control
     bool MSWCreateToolbar(const wxPoint& pos, const wxSize& size);
 
+    // just a wrapper for TB_SETBITMAPSIZE
+    void MSWSetBitmapSize(const wxSize& size);
+
     // recreate the control completely
     void Recreate();
 
index c02310686d90d465d49cb5eefc98ef7b560abeb6..140831106f7a9ec6dcaf16a79b5ede90b65bd057 100644 (file)
@@ -46,6 +46,7 @@
 #include "wx/artprov.h"
 #include "wx/sysopt.h"
 #include "wx/dcclient.h"
+#include "wx/ptr_scpd.h"
 
 #include "wx/msw/private.h"
 #include "wx/msw/dc.h"
@@ -629,10 +630,18 @@ void wxToolBar::CreateDisabledImageList()
     }
 }
 
+void wxToolBar::MSWSetBitmapSize(const wxSize& size)
+{
+    ::SendMessage(GetHwnd(), TB_SETBITMAPSIZE, 0, MAKELONG(size.x, size.y));
+}
+
 void wxToolBar::AdjustToolBitmapSize()
 {
+    // this is the default bitmap size, we only need to call TB_SETBITMAPSIZE
+    // if we use something different
+    static const wxSize sizeStd(16, 15);
+
     wxSize s(m_defaultWidth, m_defaultHeight);
-    const wxSize orig_s(s);
 
     for ( wxToolBarToolsList::const_iterator i = m_tools.begin();
           i != m_tools.end();
@@ -642,8 +651,8 @@ void wxToolBar::AdjustToolBitmapSize()
         s.IncTo(bmp.GetSize());
     }
 
-    if ( s != orig_s )
-        SetToolBitmapSize(s);
+    if ( s != sizeStd )
+        MSWSetBitmapSize(s);
 }
 
 bool wxToolBar::Realize()
@@ -694,22 +703,12 @@ bool wxToolBar::Realize()
     wxToolBarToolsList::compatibility_iterator node;
     int bitmapId = 0;
 
-    wxSize sizeBmp;
-    if ( HasFlag(wxTB_NOICONS) )
-    {
-        // no icons, don't leave space for them
-        sizeBmp.x =
-        sizeBmp.y = 0;
-    }
-    else // do show icons
+    if ( !HasFlag(wxTB_NOICONS) )
     {
         // if we already have a bitmap, we'll replace the existing one --
         // otherwise we'll install a new one
         HBITMAP oldToolBarBitmap = (HBITMAP)m_hBitmap;
 
-        sizeBmp.x = m_defaultWidth;
-        sizeBmp.y = m_defaultHeight;
-
         const wxCoord totalBitmapWidth  = m_defaultWidth *
                                           wx_truncate_cast(wxCoord, nTools),
                       totalBitmapHeight = m_defaultHeight;
@@ -913,18 +912,11 @@ bool wxToolBar::Realize()
         }
     }
 
-    // don't call SetToolBitmapSize() as we don't want to change the values of
-    // m_defaultWidth/Height
-    if ( !::SendMessage(GetHwnd(), TB_SETBITMAPSIZE, 0,
-                        MAKELONG(sizeBmp.x, sizeBmp.y)) )
-    {
-        wxLogLastError(_T("TB_SETBITMAPSIZE"));
-    }
 
     // Next add the buttons and separators
     // -----------------------------------
 
-    TBBUTTON *buttons = new TBBUTTON[nTools];
+    wxScopedArray<TBBUTTON> buttons(new TBBUTTON[nTools]);
 
     // this array will hold the indices of all controls in the toolbar
     wxArrayInt controlIds;
@@ -1044,12 +1036,11 @@ bool wxToolBar::Realize()
         i++;
     }
 
-    if ( !::SendMessage(GetHwnd(), TB_ADDBUTTONS, (WPARAM)i, (LPARAM)buttons) )
+    if ( !::SendMessage(GetHwnd(), TB_ADDBUTTONS, i, (LPARAM)buttons.get()) )
     {
         wxLogLastError(wxT("TB_ADDBUTTONS"));
     }
 
-    delete [] buttons;
 
     // Deal with the controls finally
     // ------------------------------
@@ -1363,7 +1354,7 @@ void wxToolBar::SetToolBitmapSize(const wxSize& size)
 {
     wxToolBarBase::SetToolBitmapSize(size);
 
-    ::SendMessage(GetHwnd(), TB_SETBITMAPSIZE, 0, MAKELONG(size.x, size.y));
+    MSWSetBitmapSize(size);
 }
 
 void wxToolBar::SetRows(int nRows)