From 72726d27bde785fb9448cca097f6a41682e885f4 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sat, 30 Mar 2002 22:53:27 +0000 Subject: [PATCH] some more tweaks were required git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/univ/toolbar.cpp | 77 ++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 31 deletions(-) diff --git a/src/univ/toolbar.cpp b/src/univ/toolbar.cpp index e0d4b6f169..378931a6b5 100644 --- a/src/univ/toolbar.cpp +++ b/src/univ/toolbar.cpp @@ -161,7 +161,7 @@ void wxToolBar::SetMargins(int x, int y) { // This required for similar visual effects under // native platforms and wxUniv. - wxToolBarBase::SetMargins( x + 2, y + 2 ); + wxToolBarBase::SetMargins( x + 3, y + 3 ); } // ---------------------------------------------------------------------------- @@ -405,7 +405,8 @@ void wxToolBar::DoLayout() tool->m_x = x; tool->m_y = y; - *pCur += (tool->IsSeparator() ? m_widthSeparator : widthTool) + margin; + // TODO ugly number fiddling + *pCur += ( tool->IsSeparator() ? m_widthSeparator : (widthTool+2) ) + margin; } // calculate the total toolbar size @@ -489,6 +490,12 @@ void wxToolBar::DoDraw(wxControlRenderer *renderer) break; } + if (tool->IsSeparator() && !HasFlag(wxTB_FLAT)) + { + // Draw seperators only in flat mode + continue; + } + // deal with the flags int flags = 0; @@ -632,11 +639,12 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer, if ( event.Button(1) ) { - if ( !tool || !tool->IsEnabled() ) - return TRUE; if ( event.LeftDown() || event.LeftDClick() ) { + if ( !tool || !tool->IsEnabled() ) + return TRUE; + m_winCapture = tbar; m_winCapture->CaptureMouse(); @@ -655,19 +663,13 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer, } if ( tool == m_toolCapture ) - { - // this will generate a click event - consumer->PerformAction( wxACTION_BUTTON_TOGGLE, tool->GetId() ); - - m_toolCapture = NULL; - - return TRUE; - } - //else: the mouse was released outside the tool or in - // a different tool + consumer->PerformAction( wxACTION_BUTTON_TOGGLE, m_toolCapture->GetId() ); + else + consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() ); m_toolCapture = NULL; - + + return TRUE; } //else: don't do anything special about the double click } @@ -694,27 +696,40 @@ bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer, tool = (wxToolBarTool*) tbar->FindToolForPosition( event.GetX(), event.GetY() ); } - if ((tool) && (tool == m_toolLast)) + if (m_toolCapture) { - // Still over the same tool as last time - return TRUE; + // During capture we only care of the captured tool + if (tool && (tool != m_toolCapture)) + tool = NULL; + + if (tool == m_toolLast) + return TRUE; + + if (tool) + consumer->PerformAction( wxACTION_BUTTON_PRESS, m_toolCapture->GetId() ); + else + consumer->PerformAction( wxACTION_BUTTON_RELEASE, m_toolCapture->GetId() ); + + m_toolLast = tool; } - - if (m_toolLast) + else { - // Leave old tool if any - consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() ); - } + if (tool == m_toolLast) + return TRUE; + + if (m_toolLast) + { + // Leave old tool if any + consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() ); + } + + if (tool) + { + // Enter new tool if any + consumer->PerformAction( wxACTION_TOOLBAR_ENTER, tool->GetId() ); + } - if (m_toolCapture && (m_toolCapture != tool)) - m_toolLast = NULL; - else m_toolLast = tool; - - if (m_toolLast) - { - // Enter new tool if any - consumer->PerformAction( wxACTION_TOOLBAR_ENTER, m_toolLast->GetId() ); } return TRUE; -- 2.45.2