]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/toolbar.cpp
fix warning about unused variable in release build by using standard wxLogLastError...
[wxWidgets.git] / src / univ / toolbar.cpp
index a6d53027834ae887af453e34206e5310f41c037a..264bddd0439c444eb2d6c364e87edb7e0f7b7559 100644 (file)
 
 #include "wx/univ/renderer.h"
 
+// ----------------------------------------------------------------------------
+// wxStdToolbarInputHandler: translates SPACE and ENTER keys and the left mouse
+// click into button press/release actions
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxStdToolbarInputHandler : public wxStdInputHandler
+{
+public:
+    wxStdToolbarInputHandler(wxInputHandler *inphand);
+
+    virtual bool HandleKey(wxInputConsumer *consumer,
+                           const wxKeyEvent& event,
+                           bool pressed);
+    virtual bool HandleMouse(wxInputConsumer *consumer,
+                             const wxMouseEvent& event);
+    virtual bool HandleMouseMove(wxInputConsumer *consumer, const wxMouseEvent& event);
+    virtual bool HandleFocus(wxInputConsumer *consumer, const wxFocusEvent& event);
+    virtual bool HandleActivation(wxInputConsumer *consumer, bool activated);
+
+private:
+    wxWindow            *m_winCapture;
+    wxToolBarToolBase   *m_toolCapture;
+    wxToolBarToolBase   *m_toolLast;
+};
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -165,9 +190,11 @@ bool wxToolBar::Create(wxWindow *parent,
         return false;
     }
 
+    FixupStyle();
+
     CreateInputHandler(wxINP_HANDLER_TOOLBAR);
 
-    SetBestSize(size);
+    SetInitialSize(size);
 
     return true;
 }
@@ -263,59 +290,15 @@ bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos),
 
 void wxToolBar::DoEnableTool(wxToolBarToolBase *tool, bool enable)
 {
+#if wxUSE_IMAGE
     // created disabled-state bitmap on demand
     if ( !enable && !tool->GetDisabledBitmap().Ok() )
     {
-        wxImage image( tool->GetNormalBitmap().ConvertToImage() );
-
-        // TODO: don't hardcode 180
-        unsigned char bg_red = 180;
-        unsigned char bg_green = 180;
-        unsigned char bg_blue = 180;
-
-        unsigned char mask_red = image.GetMaskRed();
-        unsigned char mask_green = image.GetMaskGreen();
-        unsigned char mask_blue = image.GetMaskBlue();
-
-        bool has_mask = image.HasMask();
+        wxImage image(tool->GetNormalBitmap().ConvertToImage());
 
-        int x,y;
-        for (y = 0; y < image.GetHeight(); y++)
-        {
-            for (x = 0; x < image.GetWidth(); x++)
-            {
-                unsigned char red = image.GetRed(x,y);
-                unsigned char green = image.GetGreen(x,y);
-                unsigned char blue = image.GetBlue(x,y);
-                if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
-                {
-                    red = (unsigned char)((((wxInt32) red  - bg_red) >> 1) + bg_red);
-                    green = (unsigned char)((((wxInt32) green  - bg_green) >> 1) + bg_green);
-                    blue = (unsigned char)((((wxInt32) blue  - bg_blue) >> 1) + bg_blue);
-                    image.SetRGB( x, y, red, green, blue );
-                }
-            }
-        }
-
-        for (y = 0; y < image.GetHeight(); y++)
-        {
-            for (x = y % 2; x < image.GetWidth(); x += 2)
-            {
-                unsigned char red = image.GetRed(x,y);
-                unsigned char green = image.GetGreen(x,y);
-                unsigned char blue = image.GetBlue(x,y);
-                if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
-                {
-                    red = (unsigned char)((((wxInt32) red  - bg_red) >> 1) + bg_red);
-                    green = (unsigned char)((((wxInt32) green  - bg_green) >> 1) + bg_green);
-                    blue = (unsigned char)((((wxInt32) blue  - bg_blue) >> 1) + bg_blue);
-                    image.SetRGB( x, y, red, green, blue );
-                }
-            }
-        }
-
-        tool->SetDisabledBitmap(image);
+        tool->SetDisabledBitmap(image.ConvertToGreyscale());
     }
+#endif // wxUSE_IMAGE
 
     RefreshTool(tool);
 }
@@ -440,7 +423,7 @@ bool wxToolBar::Realize()
     m_needsLayout = true;
     DoLayout();
 
-    SetBestSize(wxDefaultSize);
+    SetInitialSize(wxDefaultSize);
 
     return true;
 }
@@ -818,6 +801,14 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
     return true;
 }
 
+/* static */
+wxInputHandler *wxToolBar::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+    static wxStdToolbarInputHandler s_handler(handlerDef);
+
+    return &s_handler;
+}
+
 // ============================================================================
 // wxStdToolbarInputHandler implementation
 // ============================================================================