From 4e89ceb11ee28f55050dfc03c69e72cd84f98cdf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 28 Feb 2002 21:11:41 +0000 Subject: [PATCH] don't allow clicking disabled buttons git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/univ/toolbar.h | 2 ++ src/univ/toolbar.cpp | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/include/wx/univ/toolbar.h b/include/wx/univ/toolbar.h index 968bf6c267..823888bda4 100644 --- a/include/wx/univ/toolbar.h +++ b/include/wx/univ/toolbar.h @@ -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); diff --git a/src/univ/toolbar.cpp b/src/univ/toolbar.cpp index ce2d9b67af..c995466a66 100644 --- a/src/univ/toolbar.cpp +++ b/src/univ/toolbar.cpp @@ -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) { -- 2.45.2