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,19 +663,13 @@ 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;
return TRUE;
}
//else: the mouse was released outside the tool or in
// a different tool
m_toolCapture = NULL; m_toolCapture = NULL;
return TRUE;
} }
//else: don't do anything special about the double click //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() ); 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
return TRUE; if (tool && (tool != m_toolCapture))
} tool = NULL;
if (m_toolLast) if (tool == m_toolLast)
{ return TRUE;
// Leave old tool if any
consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() ); if (tool)
} consumer->PerformAction( wxACTION_BUTTON_PRESS, m_toolCapture->GetId() );
else
if (m_toolCapture && (m_toolCapture != tool)) consumer->PerformAction( wxACTION_BUTTON_RELEASE, m_toolCapture->GetId() );
m_toolLast = NULL;
else
m_toolLast = tool; m_toolLast = tool;
}
if (m_toolLast) else
{ {
// Enter new tool if any if (tool == m_toolLast)
consumer->PerformAction( wxACTION_TOOLBAR_ENTER, m_toolLast->GetId() ); 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() );
}
m_toolLast = tool;
} }
return TRUE; return TRUE;