From 11ec3acfb352dc97cc87be31747482d7534ed6c1 Mon Sep 17 00:00:00 2001 From: Andreas Schenk <andreas_schenk@hms.harvard.edu> Date: Mon, 23 Apr 2012 18:16:52 -0400 Subject: [PATCH] set correct parents for some widgets to avoid memory leaks refactored some ctors to use proper initialization lists --- .../src/data_viewer/data_viewer_panel_base.cc | 2 +- modules/gui/src/data_viewer/info_panel.cc | 24 +++++++++---------- modules/gui/src/loader_manager.cc | 15 ++++-------- modules/gui/src/loader_manager.hh | 12 ++++++---- modules/gui/src/panels/panel_bar.cc | 21 +++++++--------- modules/gui/src/panels/panel_manager.cc | 2 +- 6 files changed, 35 insertions(+), 41 deletions(-) diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.cc b/modules/gui/src/data_viewer/data_viewer_panel_base.cc index b9d1ba602..eb53154ee 100644 --- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc +++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc @@ -46,7 +46,7 @@ namespace ost { namespace img { namespace gui { DataViewerPanelBase::DataViewerPanelBase(const Data& data,QWidget* parent): QWidget(parent), DataObserver(data), - popupmenu_(new QMenu), + popupmenu_(new QMenu(this)), data_min_(0.0), data_max_(0.0), data_min_pos_(), diff --git a/modules/gui/src/data_viewer/info_panel.cc b/modules/gui/src/data_viewer/info_panel.cc index 34f1790aa..f90d45b17 100644 --- a/modules/gui/src/data_viewer/info_panel.cc +++ b/modules/gui/src/data_viewer/info_panel.cc @@ -46,18 +46,18 @@ InfoPanelLabel::InfoPanelLabel(const QString& t, QWidget* parent): InfoPanel::InfoPanel(QWidget* parent): QWidget(parent), - image_extent_(new InfoPanelLabel), - image_size_(new InfoPanelLabel), - image_sampling_(new InfoPanelLabel), - image_type_(new InfoPanelLabel), - mouse_xy_(new InfoPanelLabel), - mouse_val_(new InfoPanelLabel), - click_xy_(new InfoPanelLabel), - click_val_(new InfoPanelLabel), - selection_xy_(new InfoPanelLabel), - size_xy_(new InfoPanelLabel), - distance_(new InfoPanelLabel), - popupmenu_(new QMenu), + image_extent_(new InfoPanelLabel("",this)), + image_size_(new InfoPanelLabel("",this)), + image_sampling_(new InfoPanelLabel("",this)), + image_type_(new InfoPanelLabel("",this)), + mouse_xy_(new InfoPanelLabel("",this)), + mouse_val_(new InfoPanelLabel("",this)), + click_xy_(new InfoPanelLabel("",this)), + click_val_(new InfoPanelLabel("",this)), + selection_xy_(new InfoPanelLabel("",this)), + size_xy_(new InfoPanelLabel("",this)), + distance_(new InfoPanelLabel("",this)), + popupmenu_(new QMenu(this)), amp_pha_(false), click_(geom::Vec2()) { diff --git a/modules/gui/src/loader_manager.cc b/modules/gui/src/loader_manager.cc index 3febfd7ad..bfe2853dc 100644 --- a/modules/gui/src/loader_manager.cc +++ b/modules/gui/src/loader_manager.cc @@ -30,12 +30,13 @@ namespace ost { namespace gui { -LoaderManager::LoaderManager() +LoaderManager::LoaderManager(): + site_loaders_(), + site_actions_(new QActionGroup(GostyApp::Instance()->GetPerspective()->GetMenuBar())), + default_site_() + { - QMenuBar* menu_bar = GostyApp::Instance()->GetPerspective()->GetMenuBar(); - site_actions_=new QActionGroup(menu_bar); site_actions_->setExclusive(true); - site_menu_=new QMenu(); } void LoaderManager::AddRemoteSiteLoader(const QString& ident, RemoteSiteLoader* site_loader) @@ -48,7 +49,6 @@ void LoaderManager::AddRemoteSiteLoader(const QString& ident, RemoteSiteLoader* if(site_actions_->checkedAction()==NULL){ action->setChecked(true); } - site_menu_->addAction(action); } void LoaderManager::RemoveRemoteSiteLoader(const QString& ident) @@ -65,7 +65,6 @@ void LoaderManager::RemoveRemoteSiteLoader(const QString& ident) } if(action){ site_actions_->removeAction(action); - site_menu_->removeAction(action); } } @@ -95,10 +94,6 @@ std::vector<String> LoaderManager::GetSiteLoaderIdents() return sites; } -QMenu* LoaderManager::GetSiteMenu(){ - return site_menu_; -} - RemoteSiteLoader* LoaderManager::GetDefaultRemoteSiteLoader() { return GetRemoteSiteLoader(GetDefaultRemoteSiteIdent()); diff --git a/modules/gui/src/loader_manager.hh b/modules/gui/src/loader_manager.hh index fb6dfe8e8..f969b289c 100644 --- a/modules/gui/src/loader_manager.hh +++ b/modules/gui/src/loader_manager.hh @@ -31,11 +31,6 @@ namespace ost { namespace gui { class DLLEXPORT_OST_GUI LoaderManager { - QMap<QString,RemoteSiteLoader*> site_loaders_; - QActionGroup* site_actions_; - QMenu* site_menu_; - QString default_site_; - public: LoaderManager(); virtual ~LoaderManager(); @@ -48,6 +43,13 @@ public: QString GetDefaultRemoteSiteIdent(); void SetDefaultRemoteSiteIdent(const QString& ident); QMenu* GetSiteMenu(); + +private: + QMap<QString,RemoteSiteLoader*> site_loaders_; + QActionGroup* site_actions_; + QString default_site_; + + }; typedef boost::shared_ptr<LoaderManager> LoaderManagerPtr; diff --git a/modules/gui/src/panels/panel_bar.cc b/modules/gui/src/panels/panel_bar.cc index 706c02941..e5f168d8c 100644 --- a/modules/gui/src/panels/panel_bar.cc +++ b/modules/gui/src/panels/panel_bar.cc @@ -35,17 +35,17 @@ namespace ost { namespace gui { PanelBar::PanelBar(QWidget* parent) : - Widget(NULL, parent) + Widget(NULL, parent), + layout_(new QStackedLayout(this)), + view_modes_( new QActionGroup(this)), + view_mode_menu_(new QMenu("View Mode",this)), + current_view_mode_(NULL), + widget_states_(), + drop_box_(new DropBox(this)), + show_action_(new QAction(this)) { - widget_states_ = QList<WidgetState> (); - - view_modes_ = new QActionGroup(this); - view_mode_menu_ = new QMenu("View Mode"); connect(view_mode_menu_,SIGNAL(triggered(QAction*)),this,SLOT(ChangeViewMode(QAction*))); - current_view_mode_ = NULL; - - layout_ = new QStackedLayout(this); layout_->setMargin(0); layout_->setSpacing(0); this->setLayout(layout_); @@ -53,16 +53,13 @@ PanelBar::PanelBar(QWidget* parent) : this->setVisible(false); - show_action_ = new QAction(this); show_action_->setText("Show"); show_action_->setCheckable(true); show_action_->setChecked(false); show_action_->setEnabled(false); connect(show_action_, SIGNAL(triggered(bool)), this, - SLOT(ShowActionTrigger())); + SLOT(ShowActionTrigger())); this->addAction(show_action_); - - drop_box_ = new DropBox(); } void PanelBar::AddWidget(Widget* widget, bool is_hidden) diff --git a/modules/gui/src/panels/panel_manager.cc b/modules/gui/src/panels/panel_manager.cc index 0bf0b7f0b..1c30ad993 100644 --- a/modules/gui/src/panels/panel_manager.cc +++ b/modules/gui/src/panels/panel_manager.cc @@ -50,7 +50,7 @@ PanelManager::PanelManager(QWidget* widget): right_panel_splitter_(new ThinSplitter(Qt::Horizontal, this)), left_panel_splitter_(new ThinSplitter(Qt::Horizontal, this)), bottom_panel_splitter_(new ThinSplitter(Qt::Vertical, this)), - pool_(new WidgetPool()) + pool_(new WidgetPool(this)) { PanelBar* bottom_bar = new BottomBar(this); -- GitLab