Add DrawingState::destroyLoopIfCanceled() to avoid duplicated code

This commit is contained in:
David Capello 2016-03-26 10:56:20 -03:00
parent fde573d8db
commit 799803d582
2 changed files with 20 additions and 20 deletions

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2015 David Capello
// Copyright (C) 2001-2016 David Capello
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -116,15 +116,9 @@ bool DrawingState::onMouseDown(Editor* editor, MouseMessage* msg)
// Notify the mouse button down to the tool loop manager.
m_toolLoopManager->pressButton(pointer_from_msg(editor, msg));
// Cancel drawing loop
if (m_toolLoopManager->isCanceled()) {
destroyLoop(editor);
// Change to standby state
editor->backToPreviousState();
editor->releaseMouse();
}
// The user might have canceled by the tool loop clicking with the
// secondary mouse button.
destroyLoopIfCanceled(editor);
return true;
}
@ -216,15 +210,8 @@ bool DrawingState::onKeyUp(Editor* editor, KeyMessage* msg)
{
m_toolLoopManager->releaseKey(msg->scancode());
// Cancel drawing loop
if (m_toolLoopManager->isCanceled()) {
destroyLoop(editor);
// Change to standby state
editor->backToPreviousState();
editor->releaseMouse();
}
// The user might have canceled the tool loop pressing the 'Esc' key.
destroyLoopIfCanceled(editor);
return true;
}
@ -241,6 +228,18 @@ void DrawingState::onExposeSpritePixels(const gfx::Region& rgn)
m_toolLoop->validateDstImage(rgn);
}
void DrawingState::destroyLoopIfCanceled(Editor* editor)
{
// Cancel drawing loop
if (m_toolLoopManager->isCanceled()) {
destroyLoop(editor);
// Change to standby state
editor->backToPreviousState();
editor->releaseMouse();
}
}
void DrawingState::destroyLoop(Editor* editor)
{
if (editor) {

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2015 David Capello
// Copyright (C) 2001-2016 David Capello
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -37,6 +37,7 @@ namespace app {
void initToolLoop(Editor* editor, ui::MouseMessage* msg);
private:
void destroyLoopIfCanceled(Editor* editor);
void destroyLoop(Editor* editor);
// The tool-loop.