From e7b55037f48b8fcddbe283598cad4ef7dcf323f5 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 21 Sep 2019 16:03:59 +0200 Subject: [PATCH] LibGUI: Convert GTableView to ObjectPtr --- Applications/ChanViewer/main.cpp | 2 +- Applications/FileManager/DirectoryView.cpp | 2 +- Applications/FileManager/DirectoryView.h | 2 +- Applications/IRCClient/IRCAppWindow.cpp | 2 +- Applications/IRCClient/IRCAppWindow.h | 2 +- Applications/IRCClient/IRCWindow.cpp | 4 ++-- Applications/IRCClient/IRCWindow.h | 2 +- Applications/SystemMonitor/NetworkStatisticsWidget.cpp | 4 ++-- Applications/SystemMonitor/NetworkStatisticsWidget.h | 4 ++-- .../SystemMonitor/ProcessFileDescriptorMapWidget.cpp | 2 +- Applications/SystemMonitor/ProcessFileDescriptorMapWidget.h | 2 +- Applications/SystemMonitor/ProcessMemoryMapWidget.cpp | 2 +- Applications/SystemMonitor/ProcessMemoryMapWidget.h | 2 +- Applications/SystemMonitor/main.cpp | 6 +++--- DevTools/Inspector/main.cpp | 2 +- DevTools/VisualBuilder/VBPropertiesWindow.cpp | 2 +- DevTools/VisualBuilder/VBPropertiesWindow.h | 2 +- Libraries/LibGUI/GFilePicker.cpp | 2 +- Libraries/LibGUI/GFilePicker.h | 2 +- Libraries/LibGUI/GTableView.h | 5 +++-- 20 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Applications/ChanViewer/main.cpp b/Applications/ChanViewer/main.cpp index 9561b69a41c..73ecb52c70d 100644 --- a/Applications/ChanViewer/main.cpp +++ b/Applications/ChanViewer/main.cpp @@ -28,7 +28,7 @@ int main(int argc, char** argv) board_combo->set_preferred_size(0, 20); board_combo->set_model(BoardListModel::create()); - auto* catalog_view = new GTableView(widget); + auto catalog_view = GTableView::construct(widget); catalog_view->set_model(ThreadCatalogModel::create()); auto& catalog_model = *static_cast(catalog_view->model()); diff --git a/Applications/FileManager/DirectoryView.cpp b/Applications/FileManager/DirectoryView.cpp index 7472713ea53..326fae02abe 100644 --- a/Applications/FileManager/DirectoryView.cpp +++ b/Applications/FileManager/DirectoryView.cpp @@ -79,7 +79,7 @@ DirectoryView::DirectoryView(GWidget* parent) m_item_view = GItemView::construct(this); m_item_view->set_model(model()); - m_table_view = new GTableView(this); + m_table_view = GTableView::construct(this); m_table_view->set_model(GSortingProxyModel::create(m_model)); m_table_view->model()->set_key_column_and_sort_order(GDirectoryModel::Column::Name, GSortOrder::Ascending); diff --git a/Applications/FileManager/DirectoryView.h b/Applications/FileManager/DirectoryView.h index f383596cae0..8ea8f418803 100644 --- a/Applications/FileManager/DirectoryView.h +++ b/Applications/FileManager/DirectoryView.h @@ -72,6 +72,6 @@ private: Vector m_path_history; void add_path_to_history(const StringView& path); - GTableView* m_table_view { nullptr }; + ObjectPtr m_table_view; ObjectPtr m_item_view; }; diff --git a/Applications/IRCClient/IRCAppWindow.cpp b/Applications/IRCClient/IRCAppWindow.cpp index 9fbbd7f1933..201fd2b0df0 100644 --- a/Applications/IRCClient/IRCAppWindow.cpp +++ b/Applications/IRCClient/IRCAppWindow.cpp @@ -177,7 +177,7 @@ void IRCAppWindow::setup_widgets() auto* horizontal_container = new GSplitter(Orientation::Horizontal, outer_container); - m_window_list = new GTableView(horizontal_container); + m_window_list = GTableView::construct(horizontal_container); m_window_list->set_headers_visible(false); m_window_list->set_alternating_row_colors(false); m_window_list->set_size_columns_to_fit_content(true); diff --git a/Applications/IRCClient/IRCAppWindow.h b/Applications/IRCClient/IRCAppWindow.h index a9787850c4e..b3cb5013b83 100644 --- a/Applications/IRCClient/IRCAppWindow.h +++ b/Applications/IRCClient/IRCAppWindow.h @@ -28,7 +28,7 @@ private: IRCWindow& create_window(void* owner, IRCWindow::Type, const String& name); IRCClient m_client; GStackWidget* m_container { nullptr }; - GTableView* m_window_list { nullptr }; + ObjectPtr m_window_list; RefPtr m_join_action; RefPtr m_part_action; RefPtr m_whois_action; diff --git a/Applications/IRCClient/IRCWindow.cpp b/Applications/IRCClient/IRCWindow.cpp index 6fa0de4c42b..64d0db30637 100644 --- a/Applications/IRCClient/IRCWindow.cpp +++ b/Applications/IRCClient/IRCWindow.cpp @@ -21,7 +21,7 @@ IRCWindow::IRCWindow(IRCClient& client, void* owner, Type type, const String& na // Make a container for the log buffer view + (optional) member list. auto* container = new GSplitter(Orientation::Horizontal, this); - m_table_view = new GTableView(container); + m_table_view = GTableView::construct(container); m_table_view->set_size_columns_to_fit_content(true); m_table_view->set_headers_visible(false); m_table_view->set_font(Font::default_fixed_width_font()); @@ -32,7 +32,7 @@ IRCWindow::IRCWindow(IRCClient& client, void* owner, Type type, const String& na } if (m_type == Channel) { - auto* member_view = new GTableView(container); + auto member_view = GTableView::construct(container); member_view->set_headers_visible(false); member_view->set_size_policy(SizePolicy::Fixed, SizePolicy::Fill); member_view->set_preferred_size(100, 0); diff --git a/Applications/IRCClient/IRCWindow.h b/Applications/IRCClient/IRCWindow.h index 297463c9828..a23d028b9f9 100644 --- a/Applications/IRCClient/IRCWindow.h +++ b/Applications/IRCClient/IRCWindow.h @@ -46,7 +46,7 @@ private: void* m_owner { nullptr }; Type m_type; String m_name; - GTableView* m_table_view { nullptr }; + ObjectPtr m_table_view; ObjectPtr m_text_editor; RefPtr m_log_buffer; int m_unread_count { 0 }; diff --git a/Applications/SystemMonitor/NetworkStatisticsWidget.cpp b/Applications/SystemMonitor/NetworkStatisticsWidget.cpp index e728e2cd3ec..72081ce7fe0 100644 --- a/Applications/SystemMonitor/NetworkStatisticsWidget.cpp +++ b/Applications/SystemMonitor/NetworkStatisticsWidget.cpp @@ -18,7 +18,7 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent) adapters_group_box->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed); adapters_group_box->set_preferred_size(0, 120); - m_adapter_table_view = new GTableView(adapters_group_box); + m_adapter_table_view = GTableView::construct(adapters_group_box); m_adapter_table_view->set_size_columns_to_fit_content(true); Vector net_adapters_fields; @@ -38,7 +38,7 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent) sockets_group_box->set_size_policy(SizePolicy::Fill, SizePolicy::Fill); sockets_group_box->set_preferred_size(0, 0); - m_socket_table_view = new GTableView(sockets_group_box); + m_socket_table_view = GTableView::construct(sockets_group_box); m_socket_table_view->set_size_columns_to_fit_content(true); Vector net_tcp_fields; diff --git a/Applications/SystemMonitor/NetworkStatisticsWidget.h b/Applications/SystemMonitor/NetworkStatisticsWidget.h index a76e344ebf2..564ecc1b790 100644 --- a/Applications/SystemMonitor/NetworkStatisticsWidget.h +++ b/Applications/SystemMonitor/NetworkStatisticsWidget.h @@ -14,7 +14,7 @@ public: private: void update_models(); - GTableView* m_adapter_table_view { nullptr }; - GTableView* m_socket_table_view { nullptr }; + ObjectPtr m_adapter_table_view; + ObjectPtr m_socket_table_view; ObjectPtr m_update_timer; }; diff --git a/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.cpp b/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.cpp index bcc461ede84..d0184638bce 100644 --- a/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.cpp +++ b/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.cpp @@ -8,7 +8,7 @@ ProcessFileDescriptorMapWidget::ProcessFileDescriptorMapWidget(GWidget* parent) { set_layout(make(Orientation::Vertical)); layout()->set_margins({ 4, 4, 4, 4 }); - m_table_view = new GTableView(this); + m_table_view = GTableView::construct(this); m_table_view->set_size_columns_to_fit_content(true); Vector pid_fds_fields; diff --git a/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.h b/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.h index a858281b6d5..66d94a1b231 100644 --- a/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.h +++ b/Applications/SystemMonitor/ProcessFileDescriptorMapWidget.h @@ -13,6 +13,6 @@ public: void set_pid(pid_t); private: - GTableView* m_table_view { nullptr }; + ObjectPtr m_table_view; pid_t m_pid { -1 }; }; diff --git a/Applications/SystemMonitor/ProcessMemoryMapWidget.cpp b/Applications/SystemMonitor/ProcessMemoryMapWidget.cpp index 938f8f52376..9adfd15fe3f 100644 --- a/Applications/SystemMonitor/ProcessMemoryMapWidget.cpp +++ b/Applications/SystemMonitor/ProcessMemoryMapWidget.cpp @@ -8,7 +8,7 @@ ProcessMemoryMapWidget::ProcessMemoryMapWidget(GWidget* parent) { set_layout(make(Orientation::Vertical)); layout()->set_margins({ 4, 4, 4, 4 }); - m_table_view = new GTableView(this); + m_table_view = GTableView::construct(this); m_table_view->set_size_columns_to_fit_content(true); Vector pid_vm_fields; pid_vm_fields.empend("Address", TextAlignment::CenterLeft, [](auto& object) { diff --git a/Applications/SystemMonitor/ProcessMemoryMapWidget.h b/Applications/SystemMonitor/ProcessMemoryMapWidget.h index fa1091286e5..003f896edab 100644 --- a/Applications/SystemMonitor/ProcessMemoryMapWidget.h +++ b/Applications/SystemMonitor/ProcessMemoryMapWidget.h @@ -13,6 +13,6 @@ public: void set_pid(pid_t); private: - GTableView* m_table_view { nullptr }; + ObjectPtr m_table_view; pid_t m_pid { -1 }; }; diff --git a/Applications/SystemMonitor/main.cpp b/Applications/SystemMonitor/main.cpp index 9c8f1abf5c4..c0bb1bf4afb 100644 --- a/Applications/SystemMonitor/main.cpp +++ b/Applications/SystemMonitor/main.cpp @@ -239,7 +239,7 @@ GWidget* build_file_systems_tab() auto* fs_widget = new GWidget(nullptr); fs_widget->set_layout(make(Orientation::Vertical)); fs_widget->layout()->set_margins({ 4, 4, 4, 4 }); - auto* fs_table_view = new GTableView(fs_widget); + auto fs_table_view = GTableView::construct(fs_widget); fs_table_view->set_size_columns_to_fit_content(true); Vector df_fields; @@ -304,7 +304,7 @@ GWidget* build_pci_devices_tab() auto* pci_widget = new GWidget(nullptr); pci_widget->set_layout(make(Orientation::Vertical)); pci_widget->layout()->set_margins({ 4, 4, 4, 4 }); - auto* pci_table_view = new GTableView(pci_widget); + auto pci_table_view = GTableView::construct(pci_widget); pci_table_view->set_size_columns_to_fit_content(true); auto db = PCIDB::Database::open(); @@ -359,7 +359,7 @@ GWidget* build_devices_tab() devices_widget->set_layout(make(Orientation::Vertical)); devices_widget->layout()->set_margins({ 4, 4, 4, 4 }); - auto* devices_table_view = new GTableView(devices_widget); + auto devices_table_view = GTableView::construct(devices_widget); devices_table_view->set_size_columns_to_fit_content(true); devices_table_view->set_model(GSortingProxyModel::create(DevicesModel::create())); devices_table_view->model()->update(); diff --git a/DevTools/Inspector/main.cpp b/DevTools/Inspector/main.cpp index 4fc29779abd..d940c1216a6 100644 --- a/DevTools/Inspector/main.cpp +++ b/DevTools/Inspector/main.cpp @@ -50,7 +50,7 @@ int main(int argc, char** argv) tree_view->set_model(remote_process.object_graph_model()); tree_view->set_activates_on_selection(true); - auto* properties_table_view = new GTableView(splitter); + auto properties_table_view = GTableView::construct(splitter); properties_table_view->set_size_columns_to_fit_content(true); tree_view->on_activation = [&](auto& index) { diff --git a/DevTools/VisualBuilder/VBPropertiesWindow.cpp b/DevTools/VisualBuilder/VBPropertiesWindow.cpp index 3a235b94798..ff2759e5b7e 100644 --- a/DevTools/VisualBuilder/VBPropertiesWindow.cpp +++ b/DevTools/VisualBuilder/VBPropertiesWindow.cpp @@ -61,7 +61,7 @@ VBPropertiesWindow::VBPropertiesWindow() widget->layout()->set_margins({ 2, 2, 2, 2 }); set_main_widget(widget); - m_table_view = new GTableView(widget); + m_table_view = GTableView::construct(widget); m_table_view->set_headers_visible(false); m_table_view->set_editable(true); diff --git a/DevTools/VisualBuilder/VBPropertiesWindow.h b/DevTools/VisualBuilder/VBPropertiesWindow.h index 8dd27dd1898..070854568c7 100644 --- a/DevTools/VisualBuilder/VBPropertiesWindow.h +++ b/DevTools/VisualBuilder/VBPropertiesWindow.h @@ -14,5 +14,5 @@ public: const GTableView& table_view() const { return *m_table_view; } private: - GTableView* m_table_view { nullptr }; + ObjectPtr m_table_view; }; diff --git a/Libraries/LibGUI/GFilePicker.cpp b/Libraries/LibGUI/GFilePicker.cpp index 7776f63179e..9dd57ee8f87 100644 --- a/Libraries/LibGUI/GFilePicker.cpp +++ b/Libraries/LibGUI/GFilePicker.cpp @@ -76,7 +76,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie location_textbox->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed); location_textbox->set_preferred_size(0, 20); - m_view = new GTableView(vertical_container); + m_view = GTableView::construct(vertical_container); m_view->set_model(GSortingProxyModel::create(*m_model)); m_view->set_column_hidden(GDirectoryModel::Column::Owner, true); m_view->set_column_hidden(GDirectoryModel::Column::Group, true); diff --git a/Libraries/LibGUI/GFilePicker.h b/Libraries/LibGUI/GFilePicker.h index 33bf05def16..f7862161a2c 100644 --- a/Libraries/LibGUI/GFilePicker.h +++ b/Libraries/LibGUI/GFilePicker.h @@ -42,7 +42,7 @@ private: } } - GTableView* m_view { nullptr }; + ObjectPtr m_view; NonnullRefPtr m_model; FileSystemPath m_selected_file; diff --git a/Libraries/LibGUI/GTableView.h b/Libraries/LibGUI/GTableView.h index a469740cf1d..f34d1c887df 100644 --- a/Libraries/LibGUI/GTableView.h +++ b/Libraries/LibGUI/GTableView.h @@ -19,7 +19,6 @@ public: class GTableView : public GAbstractView { C_OBJECT(GTableView) public: - explicit GTableView(GWidget* parent); virtual ~GTableView() override; int header_height() const { return m_headers_visible ? 16 : 0; } @@ -48,7 +47,9 @@ public: void set_cell_painting_delegate(int column, OwnPtr&&); -private: +protected: + explicit GTableView(GWidget* parent); + virtual void did_update_model() override; virtual void paint_event(GPaintEvent&) override; virtual void mousedown_event(GMouseEvent&) override;