mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 07:17:35 +00:00
LibGUI: Simplify GCommonActions a bit
Use the same callback signature as GAction so we can just forward it to GAction instead of chaining callbacks.
This commit is contained in:
parent
b7bedab28a
commit
e83390387c
14 changed files with 45 additions and 65 deletions
|
@ -4,38 +4,33 @@
|
|||
#include <LibGUI/GButton.h>
|
||||
#include <LibGUI/GMenuItem.h>
|
||||
|
||||
NonnullRefPtr<GAction> GCommonActions::make_cut_action(Function<void()> callback, GWidget* widget)
|
||||
namespace GCommonActions {
|
||||
|
||||
NonnullRefPtr<GAction> make_delete_action(Function<void(GAction&)> callback, GWidget* widget)
|
||||
{
|
||||
return GAction::create(
|
||||
"Cut", { Mod_Ctrl, Key_X }, GraphicsBitmap::load_from_file("/res/icons/cut16.png"), [callback = move(callback)](const GAction&) {
|
||||
callback();
|
||||
},
|
||||
widget);
|
||||
return GAction::create("Delete", { Mod_None, Key_Delete }, GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), move(callback), widget);
|
||||
}
|
||||
|
||||
NonnullRefPtr<GAction> GCommonActions::make_copy_action(Function<void()> callback, GWidget* widget)
|
||||
NonnullRefPtr<GAction> make_cut_action(Function<void(GAction&)> callback, GWidget* widget)
|
||||
{
|
||||
return GAction::create(
|
||||
"Copy", { Mod_Ctrl, Key_C }, GraphicsBitmap::load_from_file("/res/icons/16x16/edit-copy.png"), [callback = move(callback)](const GAction&) {
|
||||
callback();
|
||||
},
|
||||
widget);
|
||||
return GAction::create("Cut", { Mod_Ctrl, Key_X }, GraphicsBitmap::load_from_file("/res/icons/cut16.png"), move(callback), widget);
|
||||
}
|
||||
|
||||
NonnullRefPtr<GAction> GCommonActions::make_paste_action(Function<void()> callback, GWidget* widget)
|
||||
NonnullRefPtr<GAction> make_copy_action(Function<void(GAction&)> callback, GWidget* widget)
|
||||
{
|
||||
return GAction::create(
|
||||
"Paste", { Mod_Ctrl, Key_V }, GraphicsBitmap::load_from_file("/res/icons/paste16.png"), [callback = move(callback)](const GAction&) {
|
||||
callback();
|
||||
},
|
||||
widget);
|
||||
return GAction::create("Copy", { Mod_Ctrl, Key_C }, GraphicsBitmap::load_from_file("/res/icons/16x16/edit-copy.png"), move(callback), widget);
|
||||
}
|
||||
|
||||
NonnullRefPtr<GAction> GCommonActions::make_quit_action(Function<void()> callback)
|
||||
NonnullRefPtr<GAction> make_paste_action(Function<void(GAction&)> callback, GWidget* widget)
|
||||
{
|
||||
return GAction::create("Quit", { Mod_Alt, Key_F4 }, [callback = move(callback)](const GAction&) {
|
||||
callback();
|
||||
});
|
||||
return GAction::create("Paste", { Mod_Ctrl, Key_V }, GraphicsBitmap::load_from_file("/res/icons/paste16.png"), move(callback), widget);
|
||||
}
|
||||
|
||||
NonnullRefPtr<GAction> make_quit_action(Function<void(GAction&)> callback)
|
||||
{
|
||||
return GAction::create("Quit", { Mod_Alt, Key_F4 }, move(callback));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
GAction::GAction(const StringView& text, Function<void(GAction&)> on_activation_callback, GWidget* widget)
|
||||
|
|
|
@ -19,10 +19,11 @@ class GMenuItem;
|
|||
class GWidget;
|
||||
|
||||
namespace GCommonActions {
|
||||
NonnullRefPtr<GAction> make_cut_action(Function<void()>, GWidget* widget);
|
||||
NonnullRefPtr<GAction> make_copy_action(Function<void()>, GWidget* widget);
|
||||
NonnullRefPtr<GAction> make_paste_action(Function<void()>, GWidget* widget);
|
||||
NonnullRefPtr<GAction> make_quit_action(Function<void()>);
|
||||
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_paste_action(Function<void(GAction&)>, GWidget* widget = nullptr);
|
||||
NonnullRefPtr<GAction> make_delete_action(Function<void(GAction&)>, GWidget* widget = nullptr);
|
||||
NonnullRefPtr<GAction> make_quit_action(Function<void(GAction&)>);
|
||||
};
|
||||
|
||||
class GAction : public RefCounted<GAction>
|
||||
|
|
|
@ -47,26 +47,10 @@ void GTextEditor::create_actions()
|
|||
},
|
||||
this);
|
||||
|
||||
m_cut_action = GCommonActions::make_cut_action([&] {
|
||||
cut();
|
||||
},
|
||||
this);
|
||||
|
||||
m_copy_action = GCommonActions::make_copy_action([&] {
|
||||
copy();
|
||||
},
|
||||
this);
|
||||
|
||||
m_paste_action = GCommonActions::make_paste_action([&] {
|
||||
paste();
|
||||
},
|
||||
this);
|
||||
|
||||
m_delete_action = GAction::create(
|
||||
"Delete", { 0, Key_Delete }, GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), [&](const GAction&) {
|
||||
do_delete();
|
||||
},
|
||||
this);
|
||||
m_cut_action = GCommonActions::make_cut_action([&](auto&) { cut(); }, this);
|
||||
m_copy_action = GCommonActions::make_copy_action([&](auto&) { copy(); }, this);
|
||||
m_paste_action = GCommonActions::make_paste_action([&](auto&) { paste(); }, this);
|
||||
m_delete_action = GCommonActions::make_delete_action([&](auto&) { do_delete(); }, this);
|
||||
}
|
||||
|
||||
void GTextEditor::set_text(const StringView& text)
|
||||
|
@ -554,13 +538,13 @@ void GTextEditor::keydown_event(GKeyEvent& event)
|
|||
} else if (m_cursor.line() != line_count() - 1) {
|
||||
new_line = m_cursor.line() + 1;
|
||||
new_column = 0;
|
||||
}
|
||||
}
|
||||
toggle_selection_if_needed_for_event(event);
|
||||
set_cursor(new_line, new_column);
|
||||
if (m_selection.start().is_valid()) {
|
||||
m_selection.set_end(m_cursor);
|
||||
did_update_selection();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!event.ctrl() && event.key() == KeyCode::Key_Home) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue