From 032ffbcf64784d77ad1bda38c803f51ef5ee4167 Mon Sep 17 00:00:00 2001 From: Matthias-Sleurink <83409229+Matthias-Sleurink@users.noreply.github.com> Date: Thu, 3 Feb 2022 11:22:35 +0100 Subject: [PATCH] PixelPaint: Don't overwrite images with project file on save The ImageEditor tracks whether it was loaded from an image (the alternative being a project file.) If it was loaded from an image file we redirect save project actions to save as instead. --- Userland/Applications/PixelPaint/ImageEditor.cpp | 8 +++++++- Userland/Applications/PixelPaint/ImageEditor.h | 4 ++++ Userland/Applications/PixelPaint/MainWidget.cpp | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Userland/Applications/PixelPaint/ImageEditor.cpp b/Userland/Applications/PixelPaint/ImageEditor.cpp index 3ad8ca8458..d90eaffad7 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.cpp +++ b/Userland/Applications/PixelPaint/ImageEditor.cpp @@ -587,7 +587,7 @@ bool ImageEditor::request_close() void ImageEditor::save_project() { - if (path().is_empty()) { + if (path().is_empty() || m_loaded_from_image) { save_project_as(); return; } @@ -614,6 +614,7 @@ void ImageEditor::save_project_as() return; } set_path(file->filename()); + set_loaded_from_image(false); undo_stack().set_current_unmodified(); } @@ -649,4 +650,9 @@ void ImageEditor::set_show_active_layer_boundary(bool show) update(); } +void ImageEditor::set_loaded_from_image(bool loaded_from_image) +{ + m_loaded_from_image = loaded_from_image; +} + } diff --git a/Userland/Applications/PixelPaint/ImageEditor.h b/Userland/Applications/PixelPaint/ImageEditor.h index b8110d540f..caa42dd705 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.h +++ b/Userland/Applications/PixelPaint/ImageEditor.h @@ -114,6 +114,8 @@ public: bool show_active_layer_boundary() const { return m_show_active_layer_boundary; } void set_show_active_layer_boundary(bool); + void set_loaded_from_image(bool); + private: explicit ImageEditor(NonnullRefPtr); @@ -170,6 +172,8 @@ private: Variant> m_active_cursor { Gfx::StandardCursor::None }; Selection m_selection; + + bool m_loaded_from_image { true }; }; } diff --git a/Userland/Applications/PixelPaint/MainWidget.cpp b/Userland/Applications/PixelPaint/MainWidget.cpp index 6e2a2cb797..c144c0f870 100644 --- a/Userland/Applications/PixelPaint/MainWidget.cpp +++ b/Userland/Applications/PixelPaint/MainWidget.cpp @@ -712,6 +712,7 @@ void MainWidget::open_image(Core::File& file) auto& image = *m_loader.release_image(); auto& editor = create_new_editor(image); + editor.set_loaded_from_image(m_loader.is_raw_image()); editor.set_path(file.filename()); editor.undo_stack().set_current_unmodified(); m_layer_list_widget->set_image(&image);