Sfoglia il codice sorgente

LibGUI: Add Undo/Redo to GCommonActions

Andreas Kling 5 anni fa
parent
commit
b41b5433f4

+ 10 - 0
Libraries/LibGUI/GAction.cpp

@@ -6,6 +6,16 @@
 
 
 namespace GCommonActions {
 namespace GCommonActions {
 
 
+NonnullRefPtr<GAction> make_undo_action(Function<void(GAction&)> callback, GWidget* widget)
+{
+    return GAction::create("Undo", { Mod_Ctrl, Key_Z }, GraphicsBitmap::load_from_file("/res/icons/16x16/undo.png"), move(callback), widget);
+}
+
+NonnullRefPtr<GAction> make_redo_action(Function<void(GAction&)> callback, GWidget* widget)
+{
+    return GAction::create("Redo", { Mod_Ctrl, Key_Y }, GraphicsBitmap::load_from_file("/res/icons/16x16/redo.png"), move(callback), widget);
+}
+
 NonnullRefPtr<GAction> make_delete_action(Function<void(GAction&)> callback, GWidget* widget)
 NonnullRefPtr<GAction> make_delete_action(Function<void(GAction&)> callback, GWidget* widget)
 {
 {
     return GAction::create("Delete", { Mod_None, Key_Delete }, GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), move(callback), widget);
     return GAction::create("Delete", { Mod_None, Key_Delete }, GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), move(callback), widget);

+ 2 - 0
Libraries/LibGUI/GAction.h

@@ -19,6 +19,8 @@ class GMenuItem;
 class GWidget;
 class GWidget;
 
 
 namespace GCommonActions {
 namespace GCommonActions {
+NonnullRefPtr<GAction> make_undo_action(Function<void(GAction&)>, GWidget* widget = nullptr);
+NonnullRefPtr<GAction> make_redo_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_cut_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_cut_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_copy_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_copy_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_paste_action(Function<void(GAction&)>, GWidget* widget = nullptr);
 NonnullRefPtr<GAction> make_paste_action(Function<void(GAction&)>, GWidget* widget = nullptr);

+ 6 - 12
Libraries/LibGUI/GTextEditor.cpp

@@ -35,18 +35,12 @@ GTextEditor::~GTextEditor()
 
 
 void GTextEditor::create_actions()
 void GTextEditor::create_actions()
 {
 {
-    m_undo_action = GAction::create(
-        "Undo", { Mod_Ctrl, Key_Z }, GraphicsBitmap::load_from_file("/res/icons/16x16/undo.png"), [&](const GAction&) {
-            // FIXME: Undo
-        },
-        this);
-
-    m_redo_action = GAction::create(
-        "Redo", { Mod_Ctrl, Key_Y }, GraphicsBitmap::load_from_file("/res/icons/16x16/redo.png"), [&](const GAction&) {
-            // FIXME: Redo
-        },
-        this);
-
+    m_undo_action = GCommonActions::make_undo_action([&](auto&) {
+        // FIXME: Undo
+    });
+    m_redo_action = GCommonActions::make_redo_action([&](auto&) {
+        // FIXME: Undo
+    });
     m_cut_action = GCommonActions::make_cut_action([&](auto&) { cut(); }, this);
     m_cut_action = GCommonActions::make_cut_action([&](auto&) { cut(); }, this);
     m_copy_action = GCommonActions::make_copy_action([&](auto&) { copy(); }, this);
     m_copy_action = GCommonActions::make_copy_action([&](auto&) { copy(); }, this);
     m_paste_action = GCommonActions::make_paste_action([&](auto&) { paste(); }, this);
     m_paste_action = GCommonActions::make_paste_action([&](auto&) { paste(); }, this);