Commit 875c0f70 authored by Maciej Suminski's avatar Maciej Suminski
Browse files

Modified InvokeTool(), so besides resetting the tool, it also send an ActivateTool event.

Added generation of CancelTool event upon ESC key press.
Minor bugfix.
parent 1057d5a5
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -237,10 +237,17 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent )
        int mods = decodeModifiers( ke );

        if( type == wxEVT_KEY_UP )
        {
            if( key == WXK_ESCAPE )
                evt = TOOL_EVENT( TC_Command, TA_CancelTool );
            else
                evt = TOOL_EVENT( TC_Keyboard, TA_KeyUp, key | mods );
        }
        else
        {
            evt = TOOL_EVENT( TC_Keyboard, TA_KeyDown, key | mods );
        }
    }

	if( evt )
		m_toolMgr->ProcessEvent( *evt );
@@ -263,8 +270,5 @@ void TOOL_DISPATCHER::DispatchWxCommand( wxCommandEvent &aEvent )
	}

	if( activateTool )
	{
		TOOL_EVENT evt( TC_Command, TA_ActivateTool, toolName );
		m_toolMgr->ProcessEvent( evt );
	}
		m_toolMgr->InvokeTool( toolName );
}
+12 −3
Original line number Diff line number Diff line
@@ -98,6 +98,9 @@ void TOOL_MANAGER::InvokeTool( TOOL_ID aToolId )

    if( tool && tool->GetType() == TOOL_Interactive )
        static_cast<TOOL_INTERACTIVE*>( tool )->Reset();

    TOOL_EVENT evt( TC_Command, TA_ActivateTool, tool->GetName() );
    ProcessEvent( evt );
}


@@ -105,8 +108,8 @@ void TOOL_MANAGER::InvokeTool( const std::string& aName )
{
    TOOL_BASE* tool = FindTool( aName );

    if( tool && tool->GetType() == TOOL_Interactive )
        static_cast<TOOL_INTERACTIVE*>( tool )->Reset();
    if( tool )
        InvokeTool( tool->GetId() );
}


@@ -169,7 +172,10 @@ void TOOL_MANAGER::dispatchInternal( TOOL_EVENT& aEvent )
				st->waitEvents.clear();
				st->cofunc->Resume();
				if( !st->cofunc->Running() )
				{
					delete st->cofunc;
					st->cofunc = NULL;
				}
			}
		}
		else
@@ -194,7 +200,10 @@ void TOOL_MANAGER::dispatchInternal( TOOL_EVENT& aEvent )
						st->cofunc->Call( aEvent );
						
						if( !st->cofunc->Running() )
						{
							delete st->cofunc;
							st->cofunc = NULL;
						}
					}
				}
			}