summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI
diff options
context:
space:
mode:
authorsin-ack <sin-ack@users.noreply.github.com>2021-08-08 09:23:48 +0000
committerAndreas Kling <kling@serenityos.org>2021-08-08 13:46:27 +0200
commit99dfab08c92cbda09fe94950899b19cb616b355e (patch)
tree220dfdf0dd1427a6a4f763716cf27f7ffc8836d2 /Userland/Libraries/LibGUI
parent16c38788c3a31c2b5d02ceac0e7cc5004fbc2719 (diff)
downloadserenity-99dfab08c92cbda09fe94950899b19cb616b355e.zip
LibGUI: Correctly call update() in ProcessChooser
After the update -> invalidate change a couple places broke when update() was supposed to be manually called. This instance was not marked virtual or override, which made it hard to detect. This commit makes sure that update() on the original model is called when the RunningProcessesModel needs an update.
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r--Userland/Libraries/LibGUI/ProcessChooser.cpp9
-rw-r--r--Userland/Libraries/LibGUI/ProcessChooser.h2
2 files changed, 8 insertions, 3 deletions
diff --git a/Userland/Libraries/LibGUI/ProcessChooser.cpp b/Userland/Libraries/LibGUI/ProcessChooser.cpp
index bd8b1b1143..cc72a9dfa1 100644
--- a/Userland/Libraries/LibGUI/ProcessChooser.cpp
+++ b/Userland/Libraries/LibGUI/ProcessChooser.cpp
@@ -35,11 +35,14 @@ ProcessChooser::ProcessChooser(const StringView& window_title, const StringView&
widget.set_layout<GUI::VerticalBoxLayout>();
m_table_view = widget.add<GUI::TableView>();
- auto sorting_model = GUI::SortingProxyModel::create(RunningProcessesModel::create());
+ auto process_model = RunningProcessesModel::create();
+ auto sorting_model = GUI::SortingProxyModel::create(process_model);
sorting_model->set_sort_role(GUI::ModelRole::Display);
m_table_view->set_model(sorting_model);
m_table_view->set_key_column_and_sort_order(RunningProcessesModel::Column::PID, GUI::SortOrder::Descending);
+ m_process_model = process_model;
+
m_table_view->on_activation = [this](const ModelIndex& index) { set_pid_from_index_and_close(index); };
auto& button_container = widget.add<GUI::Widget>();
@@ -65,7 +68,7 @@ ProcessChooser::ProcessChooser(const StringView& window_title, const StringView&
done(ExecCancel);
};
- m_table_view->model()->invalidate();
+ m_process_model->update();
m_refresh_timer = add<Core::Timer>();
@@ -77,7 +80,7 @@ ProcessChooser::ProcessChooser(const StringView& window_title, const StringView&
previous_selected_pid = pid_as_variant.as_i32();
}
- m_table_view->model()->invalidate();
+ m_process_model->update();
if (previous_selected_pid == -1) {
return;
diff --git a/Userland/Libraries/LibGUI/ProcessChooser.h b/Userland/Libraries/LibGUI/ProcessChooser.h
index 78daa8fba7..412648bbde 100644
--- a/Userland/Libraries/LibGUI/ProcessChooser.h
+++ b/Userland/Libraries/LibGUI/ProcessChooser.h
@@ -8,6 +8,7 @@
#include <LibCore/Timer.h>
#include <LibGUI/Dialog.h>
+#include <LibGUI/RunningProcessesModel.h>
namespace GUI {
@@ -30,6 +31,7 @@ private:
String m_button_label;
RefPtr<Gfx::Bitmap> m_window_icon;
RefPtr<TableView> m_table_view;
+ RefPtr<RunningProcessesModel> m_process_model;
bool m_refresh_enabled { true };
unsigned m_refresh_interval { 1000 };