some more tweaks were required

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-03-30 22:53:27 +00:00
parent 34d26f42b1
commit 72726d27bd

View File

@@ -161,7 +161,7 @@ void wxToolBar::SetMargins(int x, int y)
{ {
// This required for similar visual effects under // This required for similar visual effects under
// native platforms and wxUniv. // 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_x = x;
tool->m_y = y; 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 // calculate the total toolbar size
@@ -489,6 +490,12 @@ void wxToolBar::DoDraw(wxControlRenderer *renderer)
break; break;
} }
if (tool->IsSeparator() && !HasFlag(wxTB_FLAT))
{
// Draw seperators only in flat mode
continue;
}
// deal with the flags // deal with the flags
int flags = 0; int flags = 0;
@@ -632,11 +639,12 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer,
if ( event.Button(1) ) if ( event.Button(1) )
{ {
if ( !tool || !tool->IsEnabled() )
return TRUE;
if ( event.LeftDown() || event.LeftDClick() ) if ( event.LeftDown() || event.LeftDClick() )
{ {
if ( !tool || !tool->IsEnabled() )
return TRUE;
m_winCapture = tbar; m_winCapture = tbar;
m_winCapture->CaptureMouse(); m_winCapture->CaptureMouse();
@@ -655,20 +663,14 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer,
} }
if ( tool == m_toolCapture ) if ( tool == m_toolCapture )
{ consumer->PerformAction( wxACTION_BUTTON_TOGGLE, m_toolCapture->GetId() );
// this will generate a click event else
consumer->PerformAction( wxACTION_BUTTON_TOGGLE, tool->GetId() ); consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
m_toolCapture = NULL; m_toolCapture = NULL;
return TRUE; return TRUE;
} }
//else: the mouse was released outside the tool or in
// a different tool
m_toolCapture = NULL;
}
//else: don't do anything special about the double click //else: don't do anything special about the double click
} }
@@ -694,11 +696,26 @@ bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
tool = (wxToolBarTool*) tbar->FindToolForPosition( event.GetX(), event.GetY() ); tool = (wxToolBarTool*) tbar->FindToolForPosition( event.GetX(), event.GetY() );
} }
if ((tool) && (tool == m_toolLast)) if (m_toolCapture)
{ {
// Still over the same tool as last time // During capture we only care of the captured tool
if (tool && (tool != m_toolCapture))
tool = NULL;
if (tool == m_toolLast)
return TRUE; return TRUE;
if (tool)
consumer->PerformAction( wxACTION_BUTTON_PRESS, m_toolCapture->GetId() );
else
consumer->PerformAction( wxACTION_BUTTON_RELEASE, m_toolCapture->GetId() );
m_toolLast = tool;
} }
else
{
if (tool == m_toolLast)
return TRUE;
if (m_toolLast) if (m_toolLast)
{ {
@@ -706,15 +723,13 @@ bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() ); consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() );
} }
if (m_toolCapture && (m_toolCapture != tool)) if (tool)
m_toolLast = NULL;
else
m_toolLast = tool;
if (m_toolLast)
{ {
// Enter new tool if any // Enter new tool if any
consumer->PerformAction( wxACTION_TOOLBAR_ENTER, m_toolLast->GetId() ); consumer->PerformAction( wxACTION_TOOLBAR_ENTER, tool->GetId() );
}
m_toolLast = tool;
} }
return TRUE; return TRUE;