diff --git a/src/DrawingProgram/DrawingProgram.cpp b/src/DrawingProgram/DrawingProgram.cpp index 2d1d0a1..a40240d 100644 --- a/src/DrawingProgram/DrawingProgram.cpp +++ b/src/DrawingProgram/DrawingProgram.cpp @@ -229,12 +229,24 @@ void DrawingProgram::toolbar_gui() { bool DrawingProgram::selection_action_menu(Vector2f popupPos) { Toolbar& t = world.main.toolbar; // Paste objects action only works on selection allowing tools - return !t.gui.action_list_popup_menu("General popup menu", popupPos, { - {"Paste Objects", [&]() { - selection.deselect_all(); - selection.paste_clipboard(popupPos); - }} + std::vector>> actions; + actions.emplace_back("Paste Objects", [&]() { + selection.deselect_all(); + selection.paste_clipboard(popupPos); }); + if(selection.is_something_selected()) { + actions.emplace_back("Copy Selection", [&]() { + selection.selection_to_clipboard(); + }); + actions.emplace_back("Cut Selection", [&]() { + selection.selection_to_clipboard(); + selection.delete_all(); + }); + actions.emplace_back("Delete Selection", [&]() { + selection.delete_all(); + }); + } + return !t.gui.action_list_popup_menu("General popup menu", popupPos, actions); } bool DrawingProgram::right_click_popup_gui(Vector2f popupPos) { diff --git a/src/DrawingProgram/DrawingProgramSelection.hpp b/src/DrawingProgram/DrawingProgramSelection.hpp index 672ed63..a9d4d20 100644 --- a/src/DrawingProgram/DrawingProgramSelection.hpp +++ b/src/DrawingProgram/DrawingProgramSelection.hpp @@ -30,11 +30,11 @@ class DrawingProgramSelection { void selection_to_clipboard(); void paste_clipboard(Vector2f pasteScreenPos); + void delete_all(); private: std::function&, std::vector&)> erase_select_objects_in_bvh_func(std::unordered_set& selectedComponents, const SCollision::ColliderCollection& cC, const SCollision::ColliderCollection& cCWorld); void fully_collided_erase_select_objects_func(std::unordered_set& selectedComponents, const std::shared_ptr& bvhNode); - void delete_all(); bool mouse_collided_with_selection_aabb(); bool mouse_collided_with_scale_point(); bool mouse_collided_with_rotate_center_handle_point();