From 677e4845a74bc3b227a8105dd0089929a6376312 Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Fri, 18 Mar 2022 23:36:17 +0100 Subject: [PATCH] PixelPaint: Add Cut action It's just the Copy action with erasing selection at the end. --- .../Applications/PixelPaint/MainWidget.cpp | 19 +++++++++++++++++++ Userland/Applications/PixelPaint/MainWidget.h | 1 + 2 files changed, 20 insertions(+) diff --git a/Userland/Applications/PixelPaint/MainWidget.cpp b/Userland/Applications/PixelPaint/MainWidget.cpp index dd825e3b75..7455852da8 100644 --- a/Userland/Applications/PixelPaint/MainWidget.cpp +++ b/Userland/Applications/PixelPaint/MainWidget.cpp @@ -206,6 +206,23 @@ void MainWidget::initialize_menubar(GUI::Window& window) m_edit_menu = window.add_menu("&Edit"); + m_cut_action = GUI::CommonActions::make_cut_action([&](auto&) { + auto* editor = current_image_editor(); + VERIFY(editor); + + if (!editor->active_layer()) { + dbgln("Cannot cut with no active layer selected"); + return; + } + auto bitmap = editor->active_layer()->try_copy_bitmap(editor->selection()); + if (!bitmap) { + dbgln("try_copy_bitmap() from Layer failed"); + return; + } + GUI::Clipboard::the().set_bitmap(*bitmap); + editor->active_layer()->erase_selection(editor->selection()); + }); + m_copy_action = GUI::CommonActions::make_copy_action([&](auto&) { auto* editor = current_image_editor(); VERIFY(editor); @@ -270,6 +287,7 @@ void MainWidget::initialize_menubar(GUI::Window& window) m_edit_menu->add_action(*m_undo_action); m_edit_menu->add_action(*m_redo_action); m_edit_menu->add_separator(); + m_edit_menu->add_action(*m_cut_action); m_edit_menu->add_action(*m_copy_action); m_edit_menu->add_action(*m_copy_merged_action); m_edit_menu->add_action(*m_paste_action); @@ -660,6 +678,7 @@ void MainWidget::initialize_menubar(GUI::Window& window) toolbar.add_action(*m_open_image_action); toolbar.add_action(*m_save_image_action); toolbar.add_separator(); + toolbar.add_action(*m_cut_action); toolbar.add_action(*m_copy_action); toolbar.add_action(*m_paste_action); toolbar.add_action(*m_undo_action); diff --git a/Userland/Applications/PixelPaint/MainWidget.h b/Userland/Applications/PixelPaint/MainWidget.h index bf718933a8..440b977cf0 100644 --- a/Userland/Applications/PixelPaint/MainWidget.h +++ b/Userland/Applications/PixelPaint/MainWidget.h @@ -80,6 +80,7 @@ private: RefPtr m_save_image_as_action; RefPtr m_close_image_action; + RefPtr m_cut_action; RefPtr m_copy_action; RefPtr m_copy_merged_action; RefPtr m_paste_action;