mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +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:
parent
2b1342b120
commit
bc1293925a
Notes:
sideshowbarker
2024-07-17 02:50:51 +09:00
Author: https://github.com/iyush 🔰 Commit: https://github.com/SerenityOS/serenity/commit/bc1293925a Pull-request: https://github.com/SerenityOS/serenity/pull/16652
2 changed files with 17 additions and 3 deletions
|
@ -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()));
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "GMLPreviewWidget.h"
|
||||
#include "Git/DiffViewer.h"
|
||||
#include "Git/GitWidget.h"
|
||||
#include "LibGUI/Button.h"
|
||||
#include "Locator.h"
|
||||
#include "Project.h"
|
||||
#include "ProjectBuilder.h"
|
||||
|
@ -163,6 +164,7 @@ private:
|
|||
|
||||
void update_gml_preview();
|
||||
void update_tree_view();
|
||||
void update_toolbar_actions();
|
||||
void on_cursor_change();
|
||||
void file_renamed(DeprecatedString const& old_name, DeprecatedString const& new_name);
|
||||
|
||||
|
@ -257,6 +259,10 @@ private:
|
|||
RefPtr<GUI::Action> m_wrap_anywhere_action;
|
||||
RefPtr<GUI::Action> m_wrap_at_words_action;
|
||||
|
||||
RefPtr<GUI::Button> m_cut_button;
|
||||
RefPtr<GUI::Button> m_paste_button;
|
||||
RefPtr<GUI::Button> m_copy_button;
|
||||
|
||||
Mode m_mode { Mode::Code };
|
||||
OwnPtr<Coredump::Inspector> m_coredump_inspector;
|
||||
OwnPtr<ProjectBuilder> m_project_builder;
|
||||
|
|
Loading…
Reference in a new issue