]> git.saurik.com Git - wxWidgets.git/commitdiff
don't allow clicking disabled buttons
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 28 Feb 2002 21:11:41 +0000 (21:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 28 Feb 2002 21:11:41 +0000 (21:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

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

index 968bf6c26730446ec6239a2cd5d11e5c2d0d1d67..823888bda40f264e01a0f8cc0fee93d457421a17 100644 (file)
@@ -152,6 +152,8 @@ public:
     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);
index ce2d9b67af08275f871c3d884f008798387ec4e4..c995466a661ee7690afbe602cbdb5373a4b229b8 100644 (file)
@@ -512,6 +512,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 +530,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 +644,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)
 {