diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp index a5286acae..2b22806a2 100644 --- a/src/app/ui/editor/editor.cpp +++ b/src/app/ui/editor/editor.cpp @@ -1950,6 +1950,8 @@ void Editor::onAddFrameTag(DocEvent& ev) void Editor::onRemoveFrameTag(DocEvent& ev) { m_tagFocusBand = -1; + if (m_state) + m_state->onRemoveFrameTag(this, ev.frameTag()); } void Editor::setCursor(const gfx::Point& mouseScreenPos) diff --git a/src/app/ui/editor/editor_state.h b/src/app/ui/editor/editor_state.h index e1b60386d..9d7a59acc 100644 --- a/src/app/ui/editor/editor_state.h +++ b/src/app/ui/editor/editor_state.h @@ -22,6 +22,10 @@ namespace ui { class TouchMessage; } +namespace doc { + class FrameTag; +} + namespace app { class Editor; class EditorDecorator; @@ -117,6 +121,9 @@ namespace app { // Custom ink in this state. virtual tools::Ink* getStateInk() { return nullptr; } + // Called when a tag is deleted. + virtual void onRemoveFrameTag(Editor* editor, doc::FrameTag* tag) { } + private: DISABLE_COPYING(EditorState); }; diff --git a/src/app/ui/editor/play_state.cpp b/src/app/ui/editor/play_state.cpp index 993f1655d..0ac3a59c3 100644 --- a/src/app/ui/editor/play_state.cpp +++ b/src/app/ui/editor/play_state.cpp @@ -167,6 +167,12 @@ bool PlayState::onSetCursor(Editor* editor, const gfx::Point& mouseScreenPos) return true; } +void PlayState::onRemoveFrameTag(Editor* editor, doc::FrameTag* tag) +{ + if (m_tag == tag) + m_tag = nullptr; +} + void PlayState::onPlaybackTick() { ASSERT(m_playTimer.isRunning()); diff --git a/src/app/ui/editor/play_state.h b/src/app/ui/editor/play_state.h index 808e2fcb6..054cb45ef 100644 --- a/src/app/ui/editor/play_state.h +++ b/src/app/ui/editor/play_state.h @@ -35,6 +35,7 @@ namespace app { bool onKeyDown(Editor* editor, ui::KeyMessage* msg) override; bool onKeyUp(Editor* editor, ui::KeyMessage* msg) override; bool onSetCursor(Editor* editor, const gfx::Point& mouseScreenPos) override; + void onRemoveFrameTag(Editor* editor, doc::FrameTag* tag) override; private: void onPlaybackTick();