]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/toolbar.cpp
add automatic rescaling to wxArtProvider
[wxWidgets.git] / src / univ / toolbar.cpp
index ce2d9b67af08275f871c3d884f008798387ec4e4..3db050063163c16f36b749af3400d63da8d10bda 100644 (file)
     #pragma hdrstop
 #endif
 
+#if wxUSE_TOOLBAR
+
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
     #include "wx/app.h"
-
-    #include "wx/univ/renderer.h"
 #endif
 
+#include "wx/univ/renderer.h"
+
 #include "wx/toolbar.h"
 #include "wx/image.h"
 
@@ -512,6 +514,10 @@ void wxToolBar::Press()
 {
     wxCHECK_RET( m_toolCurrent, _T("no tool to press?") );
 
+    wxLogTrace(_T("toolbar"),
+               _T("Button '%s' pressed."),
+               m_toolCurrent->GetShortHelp().c_str());
+
     // this is the tool whose state is going to change
     m_toolPressed = (wxToolBarTool *)m_toolCurrent;
 
@@ -526,14 +532,15 @@ void wxToolBar::Release()
 {
     wxCHECK_RET( m_toolPressed, _T("no tool to release?") );
 
+    wxLogTrace(_T("toolbar"),
+               _T("Button '%s' released."),
+               m_toolCurrent->GetShortHelp().c_str());
+
     wxASSERT_MSG( m_toolPressed->IsInverted(), _T("release unpressed button?") );
 
     m_toolPressed->Invert();
 
     RefreshTool(m_toolPressed);
-
-    // we're going to lose the mouse capture
-    m_toolPressed = NULL;
 }
 
 void wxToolBar::Toggle()
@@ -639,6 +646,20 @@ bool wxStdToolbarInputHandler::HandleKey(wxInputConsumer *consumer,
     return wxStdInputHandler::HandleKey(consumer, event, pressed);
 }
 
+bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer,
+                                           const wxMouseEvent& event)
+{
+    // don't let the base class press the disabled buttons but simply ignore
+    // all events on them
+    wxToolBar *tbar = wxStaticCast(consumer->GetInputWindow(), wxToolBar);
+    wxToolBarToolBase *tool = tbar->FindToolForPosition(event.GetX(), event.GetY());
+
+    if ( !tool || !tool->IsEnabled() )
+        return TRUE;
+
+    return wxStdButtonInputHandler::HandleMouse(consumer, event);
+}
+
 bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
                                                const wxMouseEvent& event)
 {
@@ -686,3 +707,5 @@ bool wxStdToolbarInputHandler::HandleActivation(wxInputConsumer *consumer,
     return TRUE;
 }
 
+#endif // wxUSE_TOOLBAR
+