summaryrefslogtreecommitdiff
path: root/Userland/DevTools/HackStudio/HackStudioWidget.cpp
diff options
context:
space:
mode:
authorAayush <aayushsharma889@gmail.com>2022-12-24 19:49:32 +0100
committerAndreas Kling <kling@serenityos.org>2022-12-25 15:40:46 +0100
commitbc1293925a271976f0646c6741e402db1f48d2fd (patch)
tree4cca6ded250e09a895fe5ae09df2b9c8b16b16b6 /Userland/DevTools/HackStudio/HackStudioWidget.cpp
parent2b1342b1204941a8e1fbb2c33403659b000f46e1 (diff)
downloadserenity-bc1293925a271976f0646c6741e402db1f48d2fd.zip
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.
Diffstat (limited to 'Userland/DevTools/HackStudio/HackStudioWidget.cpp')
-rw-r--r--Userland/DevTools/HackStudio/HackStudioWidget.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/Userland/DevTools/HackStudio/HackStudioWidget.cpp b/Userland/DevTools/HackStudio/HackStudioWidget.cpp
index 132f41231a..cfb045a53d 100644
--- a/Userland/DevTools/HackStudio/HackStudioWidget.cpp
+++ b/Userland/DevTools/HackStudio/HackStudioWidget.cpp
@@ -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()));