From fbeaf76f9699fcb52b6a4b1fb1494a69601c13ed Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 13 May 2020 00:21:13 +0200 Subject: [PATCH] PaintBrush: Update the LayerModel when moving layers around This ensures that the layer table view always shows the correct coordinates for the layer. --- Applications/PaintBrush/ImageEditor.cpp | 6 ++++++ Applications/PaintBrush/ImageEditor.h | 2 ++ Applications/PaintBrush/LayerModel.h | 2 ++ Applications/PaintBrush/MoveTool.cpp | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Applications/PaintBrush/ImageEditor.cpp b/Applications/PaintBrush/ImageEditor.cpp index 95018fdfe6..51c735c57a 100644 --- a/Applications/PaintBrush/ImageEditor.cpp +++ b/Applications/PaintBrush/ImageEditor.cpp @@ -120,4 +120,10 @@ void ImageEditor::set_active_tool(Tool* tool) m_active_tool->setup(*this); } +void ImageEditor::layers_did_change() +{ + static_cast(m_image->layer_model()).update_without_invalidating_indexes(); + update(); +} + } diff --git a/Applications/PaintBrush/ImageEditor.h b/Applications/PaintBrush/ImageEditor.h index c57599ee07..e1b273ae8c 100644 --- a/Applications/PaintBrush/ImageEditor.h +++ b/Applications/PaintBrush/ImageEditor.h @@ -49,6 +49,8 @@ public: Tool* active_tool() { return m_active_tool; } void set_active_tool(Tool*); + void layers_did_change(); + private: ImageEditor(); diff --git a/Applications/PaintBrush/LayerModel.h b/Applications/PaintBrush/LayerModel.h index a6d9884c1e..e4a8bc1229 100644 --- a/Applications/PaintBrush/LayerModel.h +++ b/Applications/PaintBrush/LayerModel.h @@ -49,6 +49,8 @@ public: virtual GUI::Variant data(const GUI::ModelIndex&, Role = Role::Display) const override; virtual void update() override { did_update(); } + void update_without_invalidating_indexes() { did_update(0); } + private: explicit LayerModel(Image&); diff --git a/Applications/PaintBrush/MoveTool.cpp b/Applications/PaintBrush/MoveTool.cpp index 6673adda44..e497ee926a 100644 --- a/Applications/PaintBrush/MoveTool.cpp +++ b/Applications/PaintBrush/MoveTool.cpp @@ -59,7 +59,7 @@ void MoveTool::on_mousemove(Layer&, GUI::MouseEvent&, GUI::MouseEvent& original_ return; auto delta = original_event.position() - m_event_origin; m_layer_being_moved->set_location(m_layer_origin.translated(delta)); - m_editor->update(); + m_editor->layers_did_change(); } void MoveTool::on_mouseup(Layer&, GUI::MouseEvent& event, GUI::MouseEvent&)