diff options
| -rw-r--r-- | src/application.cpp | 53 | ||||
| -rw-r--r-- | src/application.h | 12 | ||||
| -rw-r--r-- | src/history/historymanager.cpp | 3 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 19 | ||||
| -rw-r--r-- | src/sessionmanager.cpp | 4 | ||||
| -rw-r--r-- | src/settings/settingsdialog.cpp | 1 | ||||
| -rw-r--r-- | src/tabbar.cpp | 29 | ||||
| -rw-r--r-- | src/tabbar.h | 4 | 
8 files changed, 66 insertions, 59 deletions
diff --git a/src/application.cpp b/src/application.cpp index 05004f30..cfd4d060 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -64,10 +64,10 @@  #include <QtCore/QTimer> -QPointer<HistoryManager> Application::s_historyManager; -QPointer<BookmarkProvider> Application::s_bookmarkProvider; -QPointer<SessionManager> Application::s_sessionManager; -QPointer<AdBlockManager> Application::s_adblockManager; +QWeakPointer<HistoryManager> Application::s_historyManager; +QWeakPointer<BookmarkProvider> Application::s_bookmarkProvider; +QWeakPointer<SessionManager> Application::s_sessionManager; +QWeakPointer<AdBlockManager> Application::s_adblockManager;  Application::Application() @@ -80,12 +80,23 @@ Application::Application()  Application::~Application()  { -    qDeleteAll(m_mainWindows); +    foreach( QWeakPointer<MainWindow> window, m_mainWindows) +    { +        delete window.data(); +        window.clear(); +    } -    delete s_bookmarkProvider; -    delete s_historyManager; -    delete s_sessionManager; -    delete s_adblockManager; +    delete s_bookmarkProvider.data(); +    s_bookmarkProvider.clear(); +     +    delete s_historyManager.data(); +    s_historyManager.clear(); +     +    delete s_sessionManager.data(); +    s_sessionManager.clear(); +     +    delete s_adblockManager.data(); +    s_adblockManager.clear();  } @@ -145,7 +156,7 @@ int Application::newInstance()          // is there a window open on the current desktop ? use it!          for (int i = 0; i < m_mainWindows.size(); ++i)          { -            MainWindow *m = m_mainWindows.at(i); +            MainWindow *m = m_mainWindows.at(i).data();              KWindowInfo w = KWindowInfo(m->winId(), NET::WMDesktop);              if(w.isOnCurrentDesktop())              { @@ -210,7 +221,7 @@ MainWindow *Application::mainWindow()      if(!active)      { -        return m_mainWindows.at(0); +        return m_mainWindows.at(0).data();      }      return active;  } @@ -218,38 +229,38 @@ MainWindow *Application::mainWindow()  HistoryManager *Application::historyManager()  { -    if (!s_historyManager) +    if ( s_historyManager.isNull() )      {          s_historyManager = new HistoryManager(); -        QWebHistoryInterface::setDefaultInterface(s_historyManager); +        QWebHistoryInterface::setDefaultInterface( s_historyManager.data() );      } -    return s_historyManager; +    return s_historyManager.data();  }  BookmarkProvider *Application::bookmarkProvider()  { -    if (!s_bookmarkProvider) +    if ( s_bookmarkProvider.isNull() )      {          s_bookmarkProvider = new BookmarkProvider(instance());      } -    return s_bookmarkProvider; +    return s_bookmarkProvider.data();  }  SessionManager *Application::sessionManager()  { -    if(!s_sessionManager) +    if( s_sessionManager.isNull() )      {          s_sessionManager = new SessionManager(instance());      } -    return s_sessionManager; +    return s_sessionManager.data();  }  KIcon Application::icon(const KUrl &url)  { -    if(!Application::instance()->mainWindowList().isEmpty()) // avoid infinite loop at startup +    if( !Application::instance()->mainWindowList().isEmpty() ) // avoid infinite loop at startup      {          if(url == KUrl("about:closedTabs")) @@ -355,11 +366,11 @@ MainWindowList Application::mainWindowList()  AdBlockManager *Application::adblockManager()  { -    if(!s_adblockManager) +    if( s_adblockManager.isNull() )      {          s_adblockManager = new AdBlockManager(instance());      } -    return s_adblockManager; +    return s_adblockManager.data();  } diff --git a/src/application.h b/src/application.h index 4b951ded..0c3bd3f5 100644 --- a/src/application.h +++ b/src/application.h @@ -38,7 +38,7 @@  #include <ThreadWeaver/Job>  // Qt Includes -#include <QPointer> +#include <QWeakPointer>  #include <QList>  // Forward Declarations @@ -52,7 +52,7 @@ class AdBlockManager;  class WebView; -typedef QList< QPointer<MainWindow> > MainWindowList; +typedef QList< QWeakPointer<MainWindow> > MainWindowList;  namespace Rekonq @@ -139,10 +139,10 @@ private slots:      void loadResolvedUrl(ThreadWeaver::Job *);  private: -    static QPointer<HistoryManager> s_historyManager; -    static QPointer<BookmarkProvider> s_bookmarkProvider; -    static QPointer<SessionManager> s_sessionManager; -    static QPointer<AdBlockManager> s_adblockManager; +    static QWeakPointer<HistoryManager> s_historyManager; +    static QWeakPointer<BookmarkProvider> s_bookmarkProvider; +    static QWeakPointer<SessionManager> s_sessionManager; +    static QWeakPointer<AdBlockManager> s_adblockManager;      MainWindowList m_mainWindows;  }; diff --git a/src/history/historymanager.cpp b/src/history/historymanager.cpp index 29bdb45b..db19a6b4 100644 --- a/src/history/historymanager.cpp +++ b/src/history/historymanager.cpp @@ -69,10 +69,9 @@ HistoryManager::HistoryManager(QObject *parent)      , m_historyModel(0)      , m_historyFilterModel(0)      , m_historyTreeModel(0) -    , m_completion(0) +    , m_completion(new KCompletion)  {      // take care of the completion object -    m_completion = new KCompletion;      m_completion->setOrder( KCompletion::Weighted );      m_expiredTimer.setSingleShot(true); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index df600c05..ffc9f508 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -76,7 +76,7 @@  #include <QtCore/QRect>  #include <QtCore/QSize>  #include <QtCore/QList> -#include <QtCore/QPointer> +#include <QtCore/QWeakPointer>  #include <QtGui/QWidget>  #include <QtGui/QVBoxLayout> @@ -599,13 +599,14 @@ void MainWindow::preferences()          return;      // we didn't find an instance of this dialog, so lets create it -    QPointer<SettingsDialog> s = new SettingsDialog(this); +    QWeakPointer<SettingsDialog> s = new SettingsDialog(this);      // keep us informed when the user changes settings -    connect(s, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateBrowser())); +    connect(s.data(), SIGNAL(settingsChanged(const QString&)), this, SLOT(updateBrowser())); -    s->exec(); -    delete s; +    s.data()->exec(); +    delete s.data(); +    s.clear();  } @@ -1041,16 +1042,16 @@ void MainWindow::notifyMessage(const QString &msg, Rekonq::Notify status)  void MainWindow::clearPrivateData()  { -    QPointer<KDialog> dialog = new KDialog(this, Qt::Sheet); -    dialog->setButtons(KDialog::Ok | KDialog::Cancel); +    QWeakPointer<KDialog> dialog = new KDialog(this, Qt::Sheet); +    dialog.data()->setButtons(KDialog::Ok | KDialog::Cancel);      Ui::ClearDataWidget clearWidget;      QWidget widget;      clearWidget.setupUi(&widget); -    dialog->setMainWidget(&widget); +    dialog.data()->setMainWidget(&widget); -    if (dialog->exec() == KDialog::Accepted) +    if (dialog.data()->exec() == KDialog::Accepted)      {          if(clearWidget.clearHistory->isChecked())          { diff --git a/src/sessionmanager.cpp b/src/sessionmanager.cpp index f4e7cd3e..f512e943 100644 --- a/src/sessionmanager.cpp +++ b/src/sessionmanager.cpp @@ -71,10 +71,10 @@ void SessionManager::saveSession()      }      QTextStream out(&sessionFile);      MainWindowList wl = Application::instance()->mainWindowList(); -    Q_FOREACH(QPointer<MainWindow> w, wl) +    Q_FOREACH(QWeakPointer<MainWindow> w, wl)      {          out << "window\n"; -        MainView *mv = w->mainView(); +        MainView *mv = w.data()->mainView();          for (int i = 0 ; i < mv->count() ; i++)          {              out << mv->webTab(i)->url().toEncoded() << "\n"; diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp index e37481aa..6fab5dcf 100644 --- a/src/settings/settingsdialog.cpp +++ b/src/settings/settingsdialog.cpp @@ -53,7 +53,6 @@  #include <KCModuleProxy>  // Qt Includes -#include <QtCore/QPointer>  #include <QtGui/QWidget> diff --git a/src/tabbar.cpp b/src/tabbar.cpp index 460a2464..5e1feb56 100644 --- a/src/tabbar.cpp +++ b/src/tabbar.cpp @@ -161,24 +161,21 @@ void TabBar::showTabPreview(int tab)      int h = w*((0.0 + currentView->height())/currentView->width());      //delete previous tab preview -    if (m_previewPopup) -    { -        delete m_previewPopup; -    } - +    m_previewPopup.clear(); +          m_previewPopup = new KPassivePopup(this); -    m_previewPopup->setFrameShape(QFrame::StyledPanel); -    m_previewPopup->setFrameShadow(QFrame::Plain); -    m_previewPopup->setFixedSize(w, h); +    m_previewPopup.data()->setFrameShape(QFrame::StyledPanel); +    m_previewPopup.data()->setFrameShadow(QFrame::Plain); +    m_previewPopup.data()->setFixedSize(w, h);      QLabel *l = new QLabel();      view->page()->setViewportSize(currentView->page()->viewportSize());      l->setPixmap(WebSnap::renderPreview(*(view->page()), w, h)); -    m_previewPopup->setView(l); -    m_previewPopup->layout()->setAlignment(Qt::AlignTop); -    m_previewPopup->layout()->setMargin(0); +    m_previewPopup.data()->setView(l); +    m_previewPopup.data()->layout()->setAlignment(Qt::AlignTop); +    m_previewPopup.data()->layout()->setMargin(0);      QPoint pos( tabRect(tab).x() , tabRect(tab).y() + tabRect(tab).height() ); -    m_previewPopup->show(mapToGlobal(pos)); +    m_previewPopup.data()->show(mapToGlobal(pos));  } @@ -208,9 +205,9 @@ void TabBar::mouseMoveEvent(QMouseEvent *event)          //if current tab or not found then hide previous tab preview          if (tab==currentIndex() || tab==-1)          { -            if ( m_previewPopup) +            if ( !m_previewPopup.isNull() )              { -                m_previewPopup->hide(); +                m_previewPopup.data()->hide();              }              m_currentTabPreview = -1;          } @@ -225,9 +222,9 @@ void TabBar::leaveEvent(QEvent *event)      if (ReKonfig::alwaysShowTabPreviews())      {          //if leave tabwidget then hide previous tab preview -        if ( m_previewPopup) +        if ( !m_previewPopup.isNull() )          { -            m_previewPopup->hide(); +            m_previewPopup.data()->hide();          }          m_currentTabPreview = -1;      } diff --git a/src/tabbar.h b/src/tabbar.h index f0476cbd..b57106dc 100644 --- a/src/tabbar.h +++ b/src/tabbar.h @@ -35,7 +35,7 @@  #include "rekonqprivate_export.h"  // Qt Includes -#include <QPointer> +#include <QWeakPointer>  // KDE Includes  #include <KTabBar> @@ -99,7 +99,7 @@ private:       */      int m_actualIndex; -    QPointer<KPassivePopup> m_previewPopup; +    QWeakPointer<KPassivePopup> m_previewPopup;      int m_currentTabPreview;  };  | 
