[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/base/konq-plugins/adblock
From:       Maks Orlovich <maksim () kde ! org>
Date:       2010-10-12 15:50:09
Message-ID: 20101012155009.E01CDAC894 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1185208 by orlovich:

Fix the regression due to the 'don't forget to delete the label' fix --- the label \
may also get deleted before us  in the window.close case, so guard against that.

This cleanup order thing sure is messy (and not just here, also with view vs. part, \
etc.) :(

CCBUG: 234624
CCBUG: 253921


 M  +15 -13    adblock.cpp  
 M  +2 -1      adblock.h  


--- trunk/extragear/base/konq-plugins/adblock/adblock.cpp #1185207:1185208
@@ -60,7 +60,7 @@
 
 AdBlock::AdBlock(QObject *parent, const QVariantList & /*args*/) :
     Plugin(parent),
-    m_label(0), m_menu(0), m_elements(0)
+    m_menu(0), m_elements(0)
 {
     m_part = dynamic_cast<KHTMLPart *>(parent);
     if(!m_part)
@@ -104,10 +104,10 @@
 {
     KParts::StatusBarExtension *statusBarEx = \
KParts::StatusBarExtension::childObject(m_part);  
-    if (statusBarEx)
-        statusBarEx->removeStatusBarItem(m_label);
-    delete m_label;
-    m_label = 0;
+    if (statusBarEx && m_label)
+        statusBarEx->removeStatusBarItem(m_label.data());
+    delete m_label.data();
+    m_label.clear();
     delete m_menu;
     m_menu = 0;
     delete m_elements;
@@ -125,18 +125,20 @@
         return;
     }
 
-    m_label = new KUrlLabel(statusBarEx->statusBar());
+    KUrlLabel* label = new KUrlLabel(statusBarEx->statusBar());
 
     KIconLoader *loader = KIconLoader::global();
 
-    m_label->setFixedHeight(loader->currentSize(KIconLoader::Small));
-    m_label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
-    m_label->setUseCursor(false);
-    m_label->setPixmap(loader->loadIcon("preferences-web-browser-adblock", \
KIconLoader::Small)); +    \
label->setFixedHeight(loader->currentSize(KIconLoader::Small)); +    \
label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); +    \
label->setUseCursor(false); +    \
label->setPixmap(loader->loadIcon("preferences-web-browser-adblock", \
KIconLoader::Small));  
-    statusBarEx->addStatusBarItem(m_label, 0, false);
-    connect(m_label, SIGNAL(leftClickedUrl()), this, SLOT(slotConfigure()));
-    connect(m_label, SIGNAL(rightClickedUrl()), this, SLOT(contextMenu()));
+    statusBarEx->addStatusBarItem(label, 0, false);
+    connect(label, SIGNAL(leftClickedUrl()), this, SLOT(slotConfigure()));
+    connect(label, SIGNAL(rightClickedUrl()), this, SLOT(contextMenu()));
+    
+    m_label = label;
 }
 
 
--- trunk/extragear/base/konq-plugins/adblock/adblock.h #1185207:1185208
@@ -27,6 +27,7 @@
 #include <kparts/plugin.h>
 #include <dom/dom_node.h>
 #include <kurl.h>
+#include <QWeakPointer>
 
 class KHTMLPart;
 class KUrlLabel;
@@ -53,7 +54,7 @@
 
 private:
     QPointer<KHTMLPart> m_part;
-    KUrlLabel *m_label;
+    QWeakPointer<KUrlLabel> m_label;
     KActionMenu *m_menu;
 
     void fillBlockableElements();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic