Mercurial > octave
diff libgui/src/workspace-view.cc @ 27610:8586eb41abf5
improve memory management in workspace_view class
* workspace-view.cc (workspace_view::m_filter_checkbox,
workspace_view::m_filter, workspace_view::m_filter_widget): Create in
constructor initializer list.
(workspace_view::m_sig_mapper): Delete data member and all uses.
(workspace_view::): Delete data member and all uses.
(workspace_view::header_contextmenu_requested): Create local
QSignalMapper object for the local QMenu object since it only needs to
exist as long as the QMenu object exists.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 01 Nov 2019 12:12:10 -0400 |
parents | 3fcc650de22f |
children | 0495b64288f7 |
line wrap: on
line diff
--- a/libgui/src/workspace-view.cc Fri Nov 01 21:57:03 2019 +0100 +++ b/libgui/src/workspace-view.cc Fri Nov 01 12:12:10 2019 -0400 @@ -50,13 +50,16 @@ namespace octave { workspace_view::workspace_view (QWidget *p) - : octave_dock_widget ("WorkspaceView", p), m_view (new QTableView (this)) + : octave_dock_widget ("WorkspaceView", p), + m_view (new QTableView (this)), + m_filter_checkbox (new QCheckBox ()), + m_filter (new QComboBox (this)), + m_filter_widget (new QWidget (this)) { setWindowIcon (QIcon (":/actions/icons/logo.png")); set_title (tr ("Workspace")); setStatusTip (tr ("View the variables in the active workspace.")); - m_filter = new QComboBox (this); m_filter->setToolTip (tr ("Enter text to filter the workspace")); m_filter->setEditable (true); m_filter->setMaxCount (MaxFilterHistory); @@ -68,8 +71,6 @@ QLabel *filter_label = new QLabel (tr ("Filter")); - m_filter_checkbox = new QCheckBox (); - m_view->setWordWrap (false); m_view->setContextMenuPolicy (Qt::CustomContextMenu); m_view->setShowGrid (false); @@ -81,7 +82,6 @@ setWidget (new QWidget (this)); // Create the layouts - m_filter_widget = new QWidget (this); QHBoxLayout *filter_layout = new QHBoxLayout (); filter_layout->addWidget (filter_label); @@ -225,8 +225,6 @@ m_columns_shown_keys.append ("workspaceview/show_dimension"); m_columns_shown_keys.append ("workspaceview/show_value"); m_columns_shown_keys.append ("workspaceview/show_attribute"); - - m_sig_mapper = nullptr; } void @@ -257,9 +255,6 @@ settings->sync (); octave_dock_widget::save_settings (); - - if (m_sig_mapper) - delete m_sig_mapper; } void @@ -298,23 +293,21 @@ workspace_view::header_contextmenu_requested (const QPoint& mpos) { QMenu menu (this); - - if (m_sig_mapper) - delete m_sig_mapper; - m_sig_mapper = new QSignalMapper (this); + QSignalMapper sig_mapper (this); QSettings *settings = resource_manager::get_settings (); for (int i = 0; i < m_columns_shown.size (); i++) { QAction *action = menu.addAction (m_columns_shown.at (i), - m_sig_mapper, SLOT (map ())); - m_sig_mapper->setMapping (action, i); + &sig_mapper, SLOT (map ())); + sig_mapper.setMapping (action, i); action->setCheckable (true); action->setChecked (settings->value (m_columns_shown_keys.at (i),true).toBool ()); } - connect (m_sig_mapper, SIGNAL (mapped (int)), this, SLOT (toggle_header (int))); + connect (&sig_mapper, SIGNAL (mapped (int)), + this, SLOT (toggle_header (int))); menu.exec (m_view->mapToGlobal (mpos)); }