From 805a0333d79bca12cba8413ad7051889f795121f Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 15 Jun 2012 21:55:32 -0300 Subject: [PATCH] Fix a problem not showing the "modified" state in tabs correctly after the first DrawingState. --- src/widgets/editor/drawing_state.cpp | 18 +++++++++++------- src/widgets/editor/drawing_state.h | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/widgets/editor/drawing_state.cpp b/src/widgets/editor/drawing_state.cpp index beaa27ca2..98a0a33fa 100644 --- a/src/widgets/editor/drawing_state.cpp +++ b/src/widgets/editor/drawing_state.cpp @@ -58,10 +58,7 @@ DrawingState::DrawingState(tools::ToolLoop* toolLoop, Editor* editor, Message* m DrawingState::~DrawingState() { - delete m_toolLoopManager; - delete m_toolLoop; - m_toolLoopManager = NULL; - m_toolLoop = NULL; + destroyLoop(); } bool DrawingState::onMouseDown(Editor* editor, Message* msg) @@ -75,9 +72,7 @@ bool DrawingState::onMouseDown(Editor* editor, Message* msg) // Cancel drawing loop if (m_toolLoopManager->isCanceled()) { m_toolLoopManager->releaseLoop(pointer_from_msg(msg)); - - delete m_toolLoopManager; - m_toolLoopManager = NULL; + destroyLoop(); // Change to standby state editor->backToPreviousState(); @@ -96,6 +91,7 @@ bool DrawingState::onMouseUp(Editor* editor, Message* msg) return true; m_toolLoopManager->releaseLoop(pointer_from_msg(msg)); + destroyLoop(); // Back to standby state. editor->backToPreviousState(); @@ -162,3 +158,11 @@ bool DrawingState::onUpdateStatusBar(Editor* editor) // method called by the ToolLoopManager. return false; } + +void DrawingState::destroyLoop() +{ + delete m_toolLoopManager; + delete m_toolLoop; + m_toolLoopManager = NULL; + m_toolLoop = NULL; +} diff --git a/src/widgets/editor/drawing_state.h b/src/widgets/editor/drawing_state.h index ffc1b24f5..c021640d7 100644 --- a/src/widgets/editor/drawing_state.h +++ b/src/widgets/editor/drawing_state.h @@ -45,6 +45,8 @@ public: virtual bool requirePenPreview() OVERRIDE { return false; } private: + void destroyLoop(); + // The tool-loop. tools::ToolLoop* m_toolLoop;