diff --git a/Userland/Applications/PixelPaint/MainWidget.cpp b/Userland/Applications/PixelPaint/MainWidget.cpp index 6c04802a80..56f00d606b 100644 --- a/Userland/Applications/PixelPaint/MainWidget.cpp +++ b/Userland/Applications/PixelPaint/MainWidget.cpp @@ -64,7 +64,7 @@ MainWidget::MainWidget() }; m_tab_widget->on_tab_close_click = [&](auto& widget) { - if (request_close()) { + if (request_close_editor()) { auto& image_editor = verify_cast(widget); m_tab_widget->deferred_invoke([&] { m_tab_widget->remove_tab(image_editor); @@ -751,18 +751,16 @@ void MainWidget::create_image_from_clipboard() m_layer_list_widget->set_selected_layer(layer); } -bool MainWidget::request_close() +bool MainWidget::request_close_editor() { - if (m_tab_widget->children().is_empty()) - return true; + auto* editor = current_image_editor(); + VERIFY(editor); - VERIFY(current_image_editor()); - - if (!current_image_editor()->undo_stack().is_current_modified()) { + if (!editor->undo_stack().is_current_modified()) { return true; } - auto result = GUI::MessageBox::ask_about_unsaved_changes(window(), current_image_editor()->path(), current_image_editor()->undo_stack().last_unmodified_timestamp()); + auto result = GUI::MessageBox::ask_about_unsaved_changes(window(), editor->path(), editor->undo_stack().last_unmodified_timestamp()); if (result == GUI::MessageBox::ExecYes) { m_save_image_action->activate(); @@ -775,6 +773,16 @@ bool MainWidget::request_close() return false; } +bool MainWidget::request_close() +{ + while (!m_tab_widget->children().is_empty()) { + if (!request_close_editor()) + return false; + m_tab_widget->remove_tab(*m_tab_widget->active_widget()); + } + return true; +} + ImageEditor* MainWidget::current_image_editor() { if (!m_tab_widget->active_widget()) diff --git a/Userland/Applications/PixelPaint/MainWidget.h b/Userland/Applications/PixelPaint/MainWidget.h index fc74b625b6..dc70b6df40 100644 --- a/Userland/Applications/PixelPaint/MainWidget.h +++ b/Userland/Applications/PixelPaint/MainWidget.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Mustafa Quraish + * Copyright (c) 2021-2022, Mustafa Quraish * * SPDX-License-Identifier: BSD-2-Clause */ @@ -36,6 +36,8 @@ public: void open_image_fd(int fd, String const& path); void create_default_image(); + + bool request_close_editor(); bool request_close(); private: