From 139dbfd5b508bacf7494ba2318eae80f96dc5e76 Mon Sep 17 00:00:00 2001 From: FalseHonesty Date: Tue, 26 May 2020 22:17:06 -0400 Subject: LibGUI: Add up & down arrow hooks and input history to TextBox This patch adds the ability to enable "input history" on a textbox, allowing to navigate between the history with the arrow keys. Also removes a custom TextBox subclass from HackStudio that added the exact same hooks, and moves it to use the now standard ones. --- DevTools/HackStudio/Locator.cpp | 28 +++------------------------- DevTools/HackStudio/Locator.h | 4 +--- 2 files changed, 4 insertions(+), 28 deletions(-) (limited to 'DevTools/HackStudio') diff --git a/DevTools/HackStudio/Locator.cpp b/DevTools/HackStudio/Locator.cpp index 5f31c0af37..2a9cc5205a 100644 --- a/DevTools/HackStudio/Locator.cpp +++ b/DevTools/HackStudio/Locator.cpp @@ -73,28 +73,6 @@ private: Vector m_suggestions; }; -class LocatorTextBox final : public GUI::TextBox { - C_OBJECT(LocatorTextBox) -public: - virtual ~LocatorTextBox() override {} - - Function on_up; - Function on_down; - - virtual void keydown_event(GUI::KeyEvent& event) override - { - if (event.key() == Key_Up) - on_up(); - else if (event.key() == Key_Down) - on_down(); - - GUI::TextBox::keydown_event(event); - } - -private: - LocatorTextBox() {} -}; - Locator::Locator() { if (!s_cplusplus_icon) { @@ -106,14 +84,14 @@ Locator::Locator() set_layout(); set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); set_preferred_size(0, 20); - m_textbox = add(); + m_textbox = add(); m_textbox->on_change = [this] { update_suggestions(); }; m_textbox->on_escape_pressed = [this] { m_popup_window->hide(); }; - m_textbox->on_up = [this] { + m_textbox->on_up_pressed = [this] { GUI::ModelIndex new_index = m_suggestion_view->selection().first(); if (new_index.is_valid()) new_index = m_suggestion_view->model()->index(new_index.row() - 1); @@ -125,7 +103,7 @@ Locator::Locator() m_suggestion_view->scroll_into_view(new_index, Orientation::Vertical); } }; - m_textbox->on_down = [this] { + m_textbox->on_down_pressed = [this] { GUI::ModelIndex new_index = m_suggestion_view->selection().first(); if (new_index.is_valid()) new_index = m_suggestion_view->model()->index(new_index.row() + 1); diff --git a/DevTools/HackStudio/Locator.h b/DevTools/HackStudio/Locator.h index 28033b0fce..ccd615e444 100644 --- a/DevTools/HackStudio/Locator.h +++ b/DevTools/HackStudio/Locator.h @@ -28,8 +28,6 @@ #include -class LocatorTextBox; - class Locator final : public GUI::Widget { C_OBJECT(Locator) public: @@ -44,7 +42,7 @@ private: Locator(); - RefPtr m_textbox; + RefPtr m_textbox; RefPtr m_popup_window; RefPtr m_suggestion_view; }; -- cgit v1.2.3