Fix memory leak in welcome plugin and right hand side pane

This commit is contained in:
dt
2009-11-04 16:06:38 +01:00
parent 655b06b48d
commit a67e13942b
7 changed files with 16 additions and 9 deletions

View File

@@ -220,7 +220,7 @@ void CentralWidget::setSource(const QUrl &url)
qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage)); qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage));
if (!viewer && !lastViewer) { if (!viewer && !lastViewer) {
viewer = new HelpViewer(helpEngine, this); viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this); viewer->installEventFilter(this);
lastTabPage = tabWidget->addTab(viewer, QString()); lastTabPage = tabWidget->addTab(viewer, QString());
tabWidget->setCurrentIndex(lastTabPage); tabWidget->setCurrentIndex(lastTabPage);
@@ -428,7 +428,7 @@ void CentralWidget::setGlobalActions(const QList<QAction*> &actions)
void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom) void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
{ {
HelpViewer* viewer = new HelpViewer(helpEngine, this); HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this); viewer->installEventFilter(this);
viewer->setZoom(zoom); viewer->setZoom(zoom);
viewer->setSource(url); viewer->setSource(url);
@@ -448,7 +448,7 @@ void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
HelpViewer *CentralWidget::newEmptyTab() HelpViewer *CentralWidget::newEmptyTab()
{ {
HelpViewer* viewer = new HelpViewer(helpEngine, this); HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
viewer->installEventFilter(this); viewer->installEventFilter(this);
viewer->setFocus(Qt::OtherFocusReason); viewer->setFocus(Qt::OtherFocusReason);
#if defined(QT_NO_WEBKIT) #if defined(QT_NO_WEBKIT)

View File

@@ -491,7 +491,7 @@ void HelpPlugin::createRightPaneSideBar()
addAutoReleasedObject(new Core::BaseRightPaneWidget(m_rightPaneSideBar)); addAutoReleasedObject(new Core::BaseRightPaneWidget(m_rightPaneSideBar));
rightPaneLayout->addWidget(w); rightPaneLayout->addWidget(w);
m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0); m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0, m_rightPaneSideBar);
Aggregation::Aggregate *agg = new Aggregation::Aggregate(); Aggregation::Aggregate *agg = new Aggregation::Aggregate();
agg->add(m_helpViewerForSideBar); agg->add(m_helpViewerForSideBar);
agg->add(new HelpViewerFindSupport(m_helpViewerForSideBar)); agg->add(new HelpViewerFindSupport(m_helpViewerForSideBar));

View File

@@ -207,6 +207,7 @@ ProjectExplorerPlugin::ProjectExplorerPlugin()
ProjectExplorerPlugin::~ProjectExplorerPlugin() ProjectExplorerPlugin::~ProjectExplorerPlugin()
{ {
removeObject(d->m_welcomePlugin); removeObject(d->m_welcomePlugin);
delete d->m_welcomePlugin;
removeObject(this); removeObject(this);
delete d; delete d;
} }

View File

@@ -39,6 +39,11 @@ ProjectWelcomePage::ProjectWelcomePage()
} }
ProjectWelcomePage::~ProjectWelcomePage()
{
}
QWidget* ProjectWelcomePage::page() QWidget* ProjectWelcomePage::page()
{ {
return m_page; return m_page;

View File

@@ -42,6 +42,7 @@ class ProjectWelcomePage : public Utils::IWelcomePage
Q_OBJECT Q_OBJECT
public: public:
ProjectWelcomePage(); ProjectWelcomePage();
~ProjectWelcomePage();
QWidget *page(); QWidget *page();
QString title() const { return tr("Develop"); } QString title() const { return tr("Develop"); }

View File

@@ -230,14 +230,14 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
return false; return false;
} }
HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *parent) HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *central, QWidget *parent)
: QWebView(parent) : QWebView(parent)
, helpEngine(engine) , helpEngine(engine)
, parentWidget(parent) , parentWidget(central)
, multiTabsAllowed(true) , multiTabsAllowed(true)
, loadFinished(false) , loadFinished(false)
{ {
setPage(new HelpPage(parent, helpEngine, this)); setPage(new HelpPage(central, helpEngine, this));
settings()->setAttribute(QWebSettings::PluginsEnabled, false); settings()->setAttribute(QWebSettings::PluginsEnabled, false);
settings()->setAttribute(QWebSettings::JavaEnabled, false); settings()->setAttribute(QWebSettings::JavaEnabled, false);
@@ -245,7 +245,7 @@ HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *paren
QAction* action = pageAction(QWebPage::OpenLinkInNewWindow); QAction* action = pageAction(QWebPage::OpenLinkInNewWindow);
action->setText(tr("Open Link in New Tab")); action->setText(tr("Open Link in New Tab"));
if (!parent) { if (!central) {
multiTabsAllowed = false; multiTabsAllowed = false;
action->setVisible(false); action->setVisible(false);
} }

View File

@@ -64,7 +64,7 @@ class HelpViewer : public QWebView
Q_OBJECT Q_OBJECT
public: public:
HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *parent); HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *central, QWidget *parent);
void setSource(const QUrl &url); void setSource(const QUrl &url);
inline QUrl source() const inline QUrl source() const