LibGUI: Show command name in GUI::TextEditor undo/redo action text
We can now show things like "Undo Insert Text" and "Redo Remove Text" instead of just "Undo" and "Redo" in menu items. Pretty neat! :^)
This commit is contained in:
parent
c670d8c56d
commit
ce90d87eb6
Notes:
sideshowbarker
2024-07-18 18:28:38 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/ce90d87eb60
3 changed files with 27 additions and 0 deletions
|
@ -719,6 +719,11 @@ InsertTextCommand::InsertTextCommand(TextDocument& document, const String& text,
|
|||
{
|
||||
}
|
||||
|
||||
String InsertTextCommand::action_text() const
|
||||
{
|
||||
return "Insert Text";
|
||||
}
|
||||
|
||||
bool InsertTextCommand::merge_with(GUI::Command const& other)
|
||||
{
|
||||
if (!is<InsertTextCommand>(other))
|
||||
|
@ -804,6 +809,11 @@ RemoveTextCommand::RemoveTextCommand(TextDocument& document, const String& text,
|
|||
{
|
||||
}
|
||||
|
||||
String RemoveTextCommand::action_text() const
|
||||
{
|
||||
return "Remove Text";
|
||||
}
|
||||
|
||||
bool RemoveTextCommand::merge_with(GUI::Command const& other)
|
||||
{
|
||||
if (!is<RemoveTextCommand>(other))
|
||||
|
|
|
@ -113,6 +113,8 @@ public:
|
|||
void undo();
|
||||
void redo();
|
||||
|
||||
UndoStack const& undo_stack() const { return m_undo_stack; }
|
||||
|
||||
void notify_did_change();
|
||||
void set_all_cursors(const TextPosition&);
|
||||
|
||||
|
@ -207,6 +209,7 @@ public:
|
|||
virtual void undo() override;
|
||||
virtual void redo() override;
|
||||
virtual bool merge_with(GUI::Command const&) override;
|
||||
virtual String action_text() const override;
|
||||
const String& text() const { return m_text; }
|
||||
const TextRange& range() const { return m_range; }
|
||||
|
||||
|
@ -222,6 +225,7 @@ public:
|
|||
virtual void redo() override;
|
||||
const TextRange& range() const { return m_range; }
|
||||
virtual bool merge_with(GUI::Command const&) override;
|
||||
virtual String action_text() const override;
|
||||
|
||||
private:
|
||||
String m_text;
|
||||
|
|
|
@ -1636,9 +1636,22 @@ void TextEditor::document_did_change()
|
|||
|
||||
void TextEditor::document_did_update_undo_stack()
|
||||
{
|
||||
auto make_action_text = [](auto prefix, auto suffix) {
|
||||
StringBuilder builder;
|
||||
builder.append(prefix);
|
||||
if (suffix.has_value()) {
|
||||
builder.append(' ');
|
||||
builder.append(suffix.value());
|
||||
}
|
||||
return builder.to_string();
|
||||
};
|
||||
|
||||
m_undo_action->set_enabled(can_undo());
|
||||
m_redo_action->set_enabled(can_redo());
|
||||
|
||||
m_undo_action->set_text(make_action_text("&Undo", document().undo_stack().undo_action_text()));
|
||||
m_redo_action->set_text(make_action_text("&Redo", document().undo_stack().redo_action_text()));
|
||||
|
||||
// FIXME: This is currently firing more often than it should.
|
||||
// Ideally we'd only send this out when the undo stack modified state actually changes.
|
||||
if (on_modified_change)
|
||||
|
|
Loading…
Add table
Reference in a new issue