mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-11 01:06:01 +03:00
85101c6626
Rather than construct a new DeclarationsModel each time the user types something in the Locator, keep a single one around permanently in the ProjectDeclarations, and then use a FilteringProxyModel over it for the suggestions.
37 lines
768 B
C++
37 lines
768 B
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2022, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/HashMap.h>
|
|
#include <LibGUI/FilteringProxyModel.h>
|
|
#include <LibGUI/Widget.h>
|
|
|
|
namespace HackStudio {
|
|
|
|
class Locator final : public GUI::Widget {
|
|
C_OBJECT(Locator)
|
|
public:
|
|
virtual ~Locator() override = default;
|
|
|
|
void open();
|
|
void close();
|
|
|
|
private:
|
|
void update_suggestions();
|
|
void open_suggestion(const GUI::ModelIndex&);
|
|
|
|
Locator(Core::EventReceiver* parent = nullptr);
|
|
|
|
RefPtr<GUI::TextBox> m_textbox;
|
|
RefPtr<GUI::Window> m_popup_window;
|
|
RefPtr<GUI::TableView> m_suggestion_view;
|
|
RefPtr<GUI::FilteringProxyModel> m_model;
|
|
};
|
|
|
|
}
|