diff options
author | sin-ack <sin-ack@users.noreply.github.com> | 2021-08-08 09:23:48 +0000 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-08-08 13:46:27 +0200 |
commit | 99dfab08c92cbda09fe94950899b19cb616b355e (patch) | |
tree | 220dfdf0dd1427a6a4f763716cf27f7ffc8836d2 /Userland/Libraries/LibGUI | |
parent | 16c38788c3a31c2b5d02ceac0e7cc5004fbc2719 (diff) | |
download | serenity-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.cpp | 9 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/ProcessChooser.h | 2 |
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 }; |