summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelle Raaijmakers <jelle@gmta.nl>2021-05-25 22:48:43 +0200
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-05-26 17:39:13 +0430
commit2c772d184882dbdce0ec532f59c87743819f2e0d (patch)
treefd6bb1a769d1cd18140204b9d1c079ce18babf18
parentebe38639bcd8aac5302f969747796d940c5ab20b (diff)
downloadserenity-2c772d184882dbdce0ec532f59c87743819f2e0d.zip
LibGUI/AbstractView: Remove `on_selection`
Since the introduction of multi-select, we have had both `on_selection` and `on_selection_change`, the latter of which was only invoked when a change in selection came in through the model. This removes `AbstractView::on_selection` and replaces it usage with the more explicit `on_selection_change` everywhere.
-rw-r--r--Userland/Applications/Browser/InspectorWidget.cpp6
-rw-r--r--Userland/Applications/FileManager/main.cpp3
-rw-r--r--Userland/Applications/Help/main.cpp15
-rw-r--r--Userland/Applications/Spreadsheet/CellTypeDialog.cpp3
-rw-r--r--Userland/DevTools/HackStudio/ClassViewWidget.cpp3
-rw-r--r--Userland/DevTools/HackStudio/Debugger/DebugInfoWidget.cpp3
-rw-r--r--Userland/DevTools/HackStudio/Git/GitWidget.cpp3
-rw-r--r--Userland/DevTools/Profiler/main.cpp6
-rw-r--r--Userland/Libraries/LibGUI/AbstractView.cpp6
-rw-r--r--Userland/Libraries/LibGUI/AbstractView.h1
-rw-r--r--Userland/Libraries/LibGUI/ComboBox.cpp3
-rw-r--r--Userland/Libraries/LibGUI/FontPicker.cpp9
12 files changed, 36 insertions, 25 deletions
diff --git a/Userland/Applications/Browser/InspectorWidget.cpp b/Userland/Applications/Browser/InspectorWidget.cpp
index a8053d8c4e..115f1ed281 100644
--- a/Userland/Applications/Browser/InspectorWidget.cpp
+++ b/Userland/Applications/Browser/InspectorWidget.cpp
@@ -41,13 +41,15 @@ InspectorWidget::InspectorWidget()
auto& top_tab_widget = splitter.add<GUI::TabWidget>();
m_dom_tree_view = top_tab_widget.add_tab<GUI::TreeView>("DOM");
- m_dom_tree_view->on_selection = [this](auto& index) {
+ m_dom_tree_view->on_selection_change = [this] {
+ const auto& index = m_dom_tree_view->selection().first();
auto* node = static_cast<Web::DOM::Node*>(index.internal_data());
set_inspected_node(node);
};
m_layout_tree_view = top_tab_widget.add_tab<GUI::TreeView>("Layout");
- m_layout_tree_view->on_selection = [this](auto& index) {
+ m_layout_tree_view->on_selection_change = [this] {
+ const auto& index = m_layout_tree_view->selection().first();
auto* node = static_cast<Web::Layout::Node*>(index.internal_data());
set_inspected_node(node->dom_node());
};
diff --git a/Userland/Applications/FileManager/main.cpp b/Userland/Applications/FileManager/main.cpp
index 61a7ddf8a7..9c7692724a 100644
--- a/Userland/Applications/FileManager/main.cpp
+++ b/Userland/Applications/FileManager/main.cpp
@@ -1049,7 +1049,8 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
}
};
- tree_view.on_selection = [&](const GUI::ModelIndex& index) {
+ tree_view.on_selection_change = [&] {
+ const auto& index = tree_view.selection().first();
if (directories_model->m_previously_selected_index.is_valid())
directories_model->update_node_on_selection(directories_model->m_previously_selected_index, false);
diff --git a/Userland/Applications/Help/main.cpp b/Userland/Applications/Help/main.cpp
index 9a7f8fdaef..8f61bcc0cd 100644
--- a/Userland/Applications/Help/main.cpp
+++ b/Userland/Applications/Help/main.cpp
@@ -179,24 +179,25 @@ int main(int argc, char* argv[])
GUI::MessageBox::Type::Error);
}
};
- search_list_view.on_selection = [&](auto index) {
+ search_list_view.on_selection_change = [&] {
+ const auto& index = search_list_view.selection().first();
if (!index.is_valid())
return;
- if (auto model = search_list_view.model()) {
- auto& search_model = *static_cast<GUI::FilteringProxyModel*>(model);
- index = search_model.map(index);
- } else {
+ auto view_model = search_list_view.model();
+ if (!view_model) {
page_view.load_empty_document();
return;
}
- String path = model->page_path(index);
+ auto& search_model = *static_cast<GUI::FilteringProxyModel*>(view_model);
+ const auto& mapped_index = search_model.map(index);
+ String path = model->page_path(mapped_index);
if (path.is_null()) {
page_view.load_empty_document();
return;
}
tree_view.selection().clear();
- tree_view.selection().add(index);
+ tree_view.selection().add(mapped_index);
history.push(path);
update_actions();
open_page(path);
diff --git a/Userland/Applications/Spreadsheet/CellTypeDialog.cpp b/Userland/Applications/Spreadsheet/CellTypeDialog.cpp
index 4153a05b40..a1b6b9b75e 100644
--- a/Userland/Applications/Spreadsheet/CellTypeDialog.cpp
+++ b/Userland/Applications/Spreadsheet/CellTypeDialog.cpp
@@ -141,7 +141,8 @@ void CellTypeDialog::setup_tabs(GUI::TabWidget& tabs, const Vector<Position>& po
auto& type_list = left_side.add<GUI::ListView>();
type_list.set_model(*GUI::ItemListModel<String>::create(g_types));
type_list.set_should_hide_unnecessary_scrollbars(true);
- type_list.on_selection = [&](auto& index) {
+ type_list.on_selection_change = [&] {
+ const auto& index = type_list.selection().first();
if (!index.is_valid()) {
m_type = nullptr;
return;
diff --git a/Userland/DevTools/HackStudio/ClassViewWidget.cpp b/Userland/DevTools/HackStudio/ClassViewWidget.cpp
index 4f05ac67f6..9e8c9f6e4d 100644
--- a/Userland/DevTools/HackStudio/ClassViewWidget.cpp
+++ b/Userland/DevTools/HackStudio/ClassViewWidget.cpp
@@ -19,7 +19,8 @@ ClassViewWidget::ClassViewWidget()
set_layout<GUI::VerticalBoxLayout>();
m_class_tree = add<GUI::TreeView>();
- m_class_tree->on_selection = [this](auto& index) {
+ m_class_tree->on_selection_change = [this] {
+ const auto& index = m_class_tree->selection().first();
if (!index.is_valid())
return;
diff --git a/Userland/DevTools/HackStudio/Debugger/DebugInfoWidget.cpp b/Userland/DevTools/HackStudio/Debugger/DebugInfoWidget.cpp
index f058c7d406..e626ff8a2a 100644
--- a/Userland/DevTools/HackStudio/Debugger/DebugInfoWidget.cpp
+++ b/Userland/DevTools/HackStudio/Debugger/DebugInfoWidget.cpp
@@ -65,7 +65,8 @@ DebugInfoWidget::DebugInfoWidget()
variables_tab_widget.add_widget("Variables", build_variables_tab());
variables_tab_widget.add_widget("Registers", build_registers_tab());
- m_backtrace_view->on_selection = [this](auto& index) {
+ m_backtrace_view->on_selection_change = [this] {
+ const auto& index = m_backtrace_view->selection().first();
auto& model = static_cast<BacktraceModel&>(*m_backtrace_view->model());
// Note: The reconstruction of the register set here is obviously incomplete.
diff --git a/Userland/DevTools/HackStudio/Git/GitWidget.cpp b/Userland/DevTools/HackStudio/Git/GitWidget.cpp
index d2dc23ff21..39fb4a87f3 100644
--- a/Userland/DevTools/HackStudio/Git/GitWidget.cpp
+++ b/Userland/DevTools/HackStudio/Git/GitWidget.cpp
@@ -44,7 +44,8 @@ GitWidget::GitWidget(const LexicalPath& repo_root)
m_unstaged_files = unstaged.add<GitFilesView>(
[this](const auto& file) { stage_file(file); },
Gfx::Bitmap::load_from_file("/res/icons/16x16/plus.png").release_nonnull());
- m_unstaged_files->on_selection = [this](const GUI::ModelIndex& index) {
+ m_unstaged_files->on_selection_change = [this] {
+ const auto& index = m_unstaged_files->selection().first();
const auto& selected = index.data().as_string();
show_diff(LexicalPath(selected));
};
diff --git a/Userland/DevTools/Profiler/main.cpp b/Userland/DevTools/Profiler/main.cpp
index 6f85fef7a0..c40c95b139 100644
--- a/Userland/DevTools/Profiler/main.cpp
+++ b/Userland/DevTools/Profiler/main.cpp
@@ -143,7 +143,8 @@ int main(int argc, char** argv)
auto& disassembly_view = bottom_splitter.add<GUI::TableView>();
disassembly_view.set_visible(false);
- tree_view.on_selection = [&](auto& index) {
+ tree_view.on_selection_change = [&] {
+ const auto& index = tree_view.selection().first();
profile->set_disassembly_index(index);
disassembly_view.set_model(profile->disassembly_model());
};
@@ -161,7 +162,8 @@ int main(int argc, char** argv)
samples_table_view.set_model(profile->samples_model());
auto& individual_sample_view = samples_splitter.add<GUI::TableView>();
- samples_table_view.on_selection = [&](const GUI::ModelIndex& index) {
+ samples_table_view.on_selection_change = [&] {
+ const auto& index = samples_table_view.selection().first();
auto model = IndividualSampleModel::create(*profile, index.data(GUI::ModelRole::Custom).to_integer<size_t>());
individual_sample_view.set_model(move(model));
};
diff --git a/Userland/Libraries/LibGUI/AbstractView.cpp b/Userland/Libraries/LibGUI/AbstractView.cpp
index ba1951b627..1180054bf0 100644
--- a/Userland/Libraries/LibGUI/AbstractView.cpp
+++ b/Userland/Libraries/LibGUI/AbstractView.cpp
@@ -110,8 +110,8 @@ void AbstractView::did_update_selection()
{
if (!model() || selection().first() != m_edit_index)
stop_editing();
- if (model() && on_selection && selection().first().is_valid())
- on_selection(selection().first());
+ if (model() && on_selection_change)
+ on_selection_change();
}
void AbstractView::did_scroll()
@@ -194,8 +194,6 @@ void AbstractView::activate_selected()
void AbstractView::notify_selection_changed(Badge<ModelSelection>)
{
did_update_selection();
- if (on_selection_change)
- on_selection_change();
if (!m_suppress_update_on_selection_change)
update();
}
diff --git a/Userland/Libraries/LibGUI/AbstractView.h b/Userland/Libraries/LibGUI/AbstractView.h
index 065beeff64..5aa529354d 100644
--- a/Userland/Libraries/LibGUI/AbstractView.h
+++ b/Userland/Libraries/LibGUI/AbstractView.h
@@ -98,7 +98,6 @@ public:
Function<void()> on_selection_change;
Function<void(const ModelIndex&)> on_activation;
- Function<void(const ModelIndex&)> on_selection;
Function<void(const ModelIndex&, const ContextMenuEvent&)> on_context_menu_request;
Function<void(const ModelIndex&, const DropEvent&)> on_drop;
diff --git a/Userland/Libraries/LibGUI/ComboBox.cpp b/Userland/Libraries/LibGUI/ComboBox.cpp
index a3ac80f17f..fa676520b3 100644
--- a/Userland/Libraries/LibGUI/ComboBox.cpp
+++ b/Userland/Libraries/LibGUI/ComboBox.cpp
@@ -101,8 +101,9 @@ ComboBox::ComboBox()
m_list_view->set_hover_highlighting(true);
m_list_view->set_frame_thickness(1);
m_list_view->set_frame_shadow(Gfx::FrameShadow::Plain);
- m_list_view->on_selection = [this](auto& index) {
+ m_list_view->on_selection_change = [this] {
VERIFY(model());
+ const auto& index = m_list_view->selection().first();
m_list_view->set_activates_on_selection(true);
if (m_updating_model)
selection_updated(index);
diff --git a/Userland/Libraries/LibGUI/FontPicker.cpp b/Userland/Libraries/LibGUI/FontPicker.cpp
index 140c094f95..ea592bef79 100644
--- a/Userland/Libraries/LibGUI/FontPicker.cpp
+++ b/Userland/Libraries/LibGUI/FontPicker.cpp
@@ -56,7 +56,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
});
quick_sort(m_families);
- m_family_list_view->on_selection = [this](auto& index) {
+ m_family_list_view->on_selection_change = [this] {
+ const auto& index = m_family_list_view->selection().first();
m_family = index.data().to_string();
m_weights.clear();
Gfx::FontDatabase::the().for_each_typeface([&](auto& typeface) {
@@ -76,7 +77,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
update_font();
};
- m_weight_list_view->on_selection = [this](auto& index) {
+ m_weight_list_view->on_selection_change = [this] {
+ const auto& index = m_weight_list_view->selection().first();
bool font_is_fixed_size = false;
m_weight = index.data(ModelRole::Custom).to_i32();
m_sizes.clear();
@@ -130,7 +132,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
update_font();
};
- m_size_list_view->on_selection = [this](auto& index) {
+ m_size_list_view->on_selection_change = [this] {
+ const auto& index = m_size_list_view->selection().first();
m_size = index.data().to_i32();
m_size_spin_box->set_value(m_size.value());
update_font();