#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
// ----------------------------------------------------------------------------
return false;
}
+ FixupStyle();
+
CreateInputHandler(wxINP_HANDLER_TOOLBAR);
- SetBestSize(size);
+ SetInitialSize(size);
return true;
}
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);
}
m_needsLayout = true;
DoLayout();
- SetBestSize(wxDefaultSize);
+ SetInitialSize(wxDefaultSize);
return true;
}
return true;
}
+/* static */
+wxInputHandler *wxToolBar::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+ static wxStdToolbarInputHandler s_handler(handlerDef);
+
+ return &s_handler;
+}
+
// ============================================================================
// wxStdToolbarInputHandler implementation
// ============================================================================