1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:48:11 +00:00

Hackstudio: Use `GUI::TextEditor' actions for cut/copy/paste buttons

This fixes a bug where hackstudio's language server will crash upon
clicking the 'cut' button when no text is selected.  This was because
the actions were not disabled on empty selection.

We now disable the actions depending on if there is empty selection
inside current tab. We update the cut/copy/paste buttons' actions when
changing tabs.
This commit is contained in:
Aayush 2022-12-24 19:49:32 +01:00 committed by Andreas Kling
parent 2b1342b120
commit bc1293925a
2 changed files with 17 additions and 3 deletions

View file

@ -1171,6 +1171,7 @@ void HackStudioWidget::set_current_editor_wrapper(RefPtr<EditorWrapper> editor_w
update_window_title();
update_current_editor_title();
update_tree_view();
update_toolbar_actions();
set_current_editor_tab_widget(static_cast<GUI::TabWidget*>(m_current_editor_wrapper->parent()));
m_current_editor_tab_widget->set_active_widget(editor_wrapper);
update_statusbar();
@ -1263,9 +1264,9 @@ void HackStudioWidget::create_toolbar(GUI::Widget& parent)
toolbar.add_action(*m_delete_action);
toolbar.add_separator();
toolbar.add_action(GUI::CommonActions::make_cut_action([this](auto&) { current_editor().cut_action().activate(); }, m_editors_splitter));
toolbar.add_action(GUI::CommonActions::make_copy_action([this](auto&) { current_editor().copy_action().activate(); }, m_editors_splitter));
toolbar.add_action(GUI::CommonActions::make_paste_action([this](auto&) { current_editor().paste_action().activate(); }, m_editors_splitter));
m_cut_button = toolbar.add_action(current_editor().cut_action());
m_copy_button = toolbar.add_action(current_editor().copy_action());
m_paste_button = toolbar.add_action(current_editor().paste_action());
toolbar.add_separator();
toolbar.add_action(GUI::CommonActions::make_undo_action([this](auto&) { current_editor().undo_action().activate(); }, m_editors_splitter));
toolbar.add_action(GUI::CommonActions::make_redo_action([this](auto&) { current_editor().redo_action().activate(); }, m_editors_splitter));
@ -1653,6 +1654,13 @@ void HackStudioWidget::update_tree_view()
}
}
void HackStudioWidget::update_toolbar_actions()
{
m_copy_button->set_action(current_editor().copy_action());
m_paste_button->set_action(current_editor().paste_action());
m_cut_button->set_action(current_editor().cut_action());
}
void HackStudioWidget::update_window_title()
{
window()->set_title(DeprecatedString::formatted("{} - {} - Hack Studio", m_current_editor_wrapper->filename_title(), m_project->name()));