diff --git a/Userland/Applications/PixelPaint/ImageEditor.cpp b/Userland/Applications/PixelPaint/ImageEditor.cpp index e4212781a4..8de57a6fb9 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.cpp +++ b/Userland/Applications/PixelPaint/ImageEditor.cpp @@ -521,8 +521,10 @@ void ImageEditor::set_active_tool(Tool* tool) return; } - if (m_active_tool) + if (m_active_tool) { + m_active_tool->on_tool_deactivation(); m_active_tool->clear(); + } m_active_tool = tool; diff --git a/Userland/Applications/PixelPaint/Tools/Tool.h b/Userland/Applications/PixelPaint/Tools/Tool.h index 0662e46f80..4f056ab5a5 100644 --- a/Userland/Applications/PixelPaint/Tools/Tool.h +++ b/Userland/Applications/PixelPaint/Tools/Tool.h @@ -64,6 +64,7 @@ public: virtual bool on_keydown(GUI::KeyEvent const&); virtual void on_keyup(GUI::KeyEvent&) { } virtual void on_tool_activation() { } + virtual void on_tool_deactivation() { } virtual GUI::Widget* get_properties_widget() { return nullptr; } virtual Variant> cursor() { return Gfx::StandardCursor::None; } virtual Gfx::IntPoint point_position_to_preferred_cell(Gfx::FloatPoint position) const { return position.to_type(); }