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(); m_table_view = widget.add(); - 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(); @@ -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(); @@ -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 #include +#include namespace GUI { @@ -30,6 +31,7 @@ private: String m_button_label; RefPtr m_window_icon; RefPtr m_table_view; + RefPtr m_process_model; bool m_refresh_enabled { true }; unsigned m_refresh_interval { 1000 };