Bug 243508 - Duplicated password save toolbar and error
Summary: Duplicated password save toolbar and error
Status: RESOLVED FIXED
Alias: None
Product: rekonq
Classification: Applications
Component: general (show other bugs)
Version: 0.4.95
Platform: Ubuntu Linux
: NOR crash
Target Milestone: 0.6
Assignee: Andrea Diamantini
URL:
Keywords:
: 227022 246716 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-07-03 16:45 UTC by Vladimir Jakovlev
Modified: 2010-10-11 23:52 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Jakovlev 2010-07-03 16:45:06 UTC
Application: rekonq (0.4.95)
KDE Platform Version: 4.4.5 (KDE 4.4.5)
Qt Version: 4.6.3
Operating System: Linux 2.6.34-zen1 i686
Distribution: Ubuntu 10.04 LTS

-- Information about the crash:
Password save toolbar dublicated, when i click save twise - rekonq closed.

The crash can be reproduced every time.

 -- Backtrace:
Application: rekonq (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0xb5621aa0 (LWP 532))]

Thread 11 (Thread 0xb1765b70 (LWP 533)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb4440a07 in ?? () from /usr/lib/libQtWebKit.so.4
#3  0xb4440a51 in ?? () from /usr/lib/libQtWebKit.so.4
#4  0xb6b8996e in start_thread (arg=0xb1765b70) at pthread_create.c:300
#5  0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 10 (Thread 0xb0a34b70 (LWP 534)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb6c21997 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb41a2870 in ?? () from /usr/lib/libthreadweaver.so.4
#4  0xb41a538c in ?? () from /usr/lib/libthreadweaver.so.4
#5  0xb41a127b in ?? () from /usr/lib/libthreadweaver.so.4
#6  0xb41a5482 in ?? () from /usr/lib/libthreadweaver.so.4
#7  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#8  0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#9  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#10 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#11 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#12 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#13 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#14 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#15 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#16 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#17 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#18 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#19 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#20 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#21 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#22 0xb41a351e in ?? () from /usr/lib/libthreadweaver.so.4
#23 0xb41a3c3b in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#24 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#25 0xb6b8996e in start_thread (arg=0xb0a34b70) at pthread_create.c:300
#26 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 9 (Thread 0xafeffb70 (LWP 535)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb6c21997 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb44466a0 in ?? () from /usr/lib/libQtWebKit.so.4
#4  0xb497c444 in ?? () from /usr/lib/libQtWebKit.so.4
#5  0xb497c5e0 in ?? () from /usr/lib/libQtWebKit.so.4
#6  0xb444616f in ?? () from /usr/lib/libQtWebKit.so.4
#7  0xb4446573 in ?? () from /usr/lib/libQtWebKit.so.4
#8  0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#9  0xb6b8996e in start_thread (arg=0xafeffb70) at pthread_create.c:300
#10 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 8 (Thread 0xaf6feb70 (LWP 537)):
#0  0xb5a56e16 in *__GI_clock_gettime (clock_id=-1247432716, tp=0xaf6fdfb8) at ../sysdeps/unix/clock_gettime.c:100
#1  0xb6d46f5b in ?? () from /usr/lib/libQtCore.so.4
#2  0xb6d4c085 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb6d4c0ca in ?? () from /usr/lib/libQtCore.so.4
#4  0xb6d4a078 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb6d4a105 in ?? () from /usr/lib/libQtCore.so.4
#6  0xb59c7aca in g_main_context_prepare () from /lib/libglib-2.0.so.0
#7  0xb59c7ee9 in ?? () from /lib/libglib-2.0.so.0
#8  0xb59c84b8 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#9  0xb6d49e6f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb6d1c759 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb6d1cbaa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#12 0xb6c1dfc9 in QThread::exec() () from /usr/lib/libQtCore.so.4
#13 0xb6cfc1db in ?? () from /usr/lib/libQtCore.so.4
#14 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#15 0xb6b8996e in start_thread (arg=0xaf6feb70) at pthread_create.c:300
#16 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 7 (Thread 0xad03cb70 (LWP 553)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb6c21997 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb41a2870 in ?? () from /usr/lib/libthreadweaver.so.4
#4  0xb41a538c in ?? () from /usr/lib/libthreadweaver.so.4
#5  0xb41a127b in ?? () from /usr/lib/libthreadweaver.so.4
#6  0xb41a5482 in ?? () from /usr/lib/libthreadweaver.so.4
#7  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#8  0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#9  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#10 0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#11 0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#12 0xb41a351e in ?? () from /usr/lib/libthreadweaver.so.4
#13 0xb41a3c3b in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#14 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#15 0xb6b8996e in start_thread (arg=0xad03cb70) at pthread_create.c:300
#16 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 6 (Thread 0xaac89b70 (LWP 567)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb6c21997 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb41a2870 in ?? () from /usr/lib/libthreadweaver.so.4
#4  0xb41a538c in ?? () from /usr/lib/libthreadweaver.so.4
#5  0xb41a127b in ?? () from /usr/lib/libthreadweaver.so.4
#6  0xb41a5482 in ?? () from /usr/lib/libthreadweaver.so.4
#7  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#8  0xb41a54a1 in ?? () from /usr/lib/libthreadweaver.so.4
#9  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#10 0xb41a351e in ?? () from /usr/lib/libthreadweaver.so.4
#11 0xb41a3c3b in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#12 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#13 0xb6b8996e in start_thread (arg=0xaac89b70) at pthread_create.c:300
#14 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 5 (Thread 0xa9abfb70 (LWP 600)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e015 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb6c21997 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb41a2870 in ?? () from /usr/lib/libthreadweaver.so.4
#4  0xb41a538c in ?? () from /usr/lib/libthreadweaver.so.4
#5  0xb41a127b in ?? () from /usr/lib/libthreadweaver.so.4
#6  0xb41a5482 in ?? () from /usr/lib/libthreadweaver.so.4
#7  0xb41a24d3 in ?? () from /usr/lib/libthreadweaver.so.4
#8  0xb41a351e in ?? () from /usr/lib/libthreadweaver.so.4
#9  0xb41a3c3b in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#10 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#11 0xb6b8996e in start_thread (arg=0xa9abfb70) at pthread_create.c:300
#12 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 4 (Thread 0xa5bb6b70 (LWP 1415)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e342 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_timedwait.S:179
#2  0xaa2bfce7 in ?? () from /usr/lib/libxine.so.1
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 3 (Thread 0xa4bb4b70 (LWP 1417)):
#0  0xb5a56e16 in *__GI_clock_gettime (clock_id=-1247432716, tp=0xa4bb3fc8) at ../sysdeps/unix/clock_gettime.c:100
#1  0xb6d46f5b in ?? () from /usr/lib/libQtCore.so.4
#2  0xb6d4c085 in ?? () from /usr/lib/libQtCore.so.4
#3  0xb6d4c0ca in ?? () from /usr/lib/libQtCore.so.4
#4  0xb6d4a078 in ?? () from /usr/lib/libQtCore.so.4
#5  0xb59c7aca in g_main_context_prepare () from /lib/libglib-2.0.so.0
#6  0xb59c7ee9 in ?? () from /lib/libglib-2.0.so.0
#7  0xb59c84b8 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#8  0xb6d49e6f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#9  0xb6d1c759 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#10 0xb6d1cbaa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#11 0xb6c1dfc9 in QThread::exec() () from /usr/lib/libQtCore.so.4
#12 0xaa3ee96a in ?? () from /usr/lib/qt4/plugins/phonon_backend/phonon_xine.so
#13 0xb6c2097e in ?? () from /usr/lib/libQtCore.so.4
#14 0xb6b8996e in start_thread (arg=0xa4bb4b70) at pthread_create.c:300
#15 0xb5f81a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 2 (Thread 0x9e615b70 (LWP 1433)):
#0  0xb782b424 in __kernel_vsyscall ()
#1  0xb6b8e342 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_timedwait.S:179
#2  0xaa2bfce7 in ?? () from /usr/lib/libxine.so.1
#3  0x00000000 in ?? ()

Thread 1 (Thread 0xb5621aa0 (LWP 532)):
[KCrash Handler]
#6  0xb6ccbff9 in QUrl::QUrl(QUrl const&) () from /usr/lib/libQtCore.so.4
#7  0xb39df59e in KWebWallet::KWebWalletPrivate::saveDataToCache(QString const&) () from /usr/lib/libkdewebkit.so.5
#8  0xb39dfefa in KWebWallet::saveFormDataToCache(QString const&) () from /usr/lib/libkdewebkit.so.5
#9  0xb39db0f8 in KWebWallet::acceptSaveFormDataRequest(QString const&) () from /usr/lib/libkdewebkit.so.5
#10 0xb39e0675 in KWebWallet::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkdewebkit.so.5
#11 0xb6d2347a in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
#12 0xb6d31fbb in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#13 0xb38c63e3 in WalletBar::saveFormDataAccepted(QString const&) () from /usr/lib/libkdeinit4_rekonq.so
#14 0xb38c6419 in WalletBar::rememberData() () from /usr/lib/libkdeinit4_rekonq.so
#15 0xb38c6993 in WalletBar::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkdeinit4_rekonq.so
#16 0xb6d2347a in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
#17 0xb6d31fbb in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#18 0xb6969139 in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4
#19 0xb6647029 in ?? () from /usr/lib/libQtGui.so.4
#20 0xb6647e74 in ?? () from /usr/lib/libQtGui.so.4
#21 0xb664812e in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4
#22 0xb6299158 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#23 0xb6646ece in QAbstractButton::event(QEvent*) () from /usr/lib/libQtGui.so.4
#24 0xb66f1802 in QPushButton::event(QEvent*) () from /usr/lib/libQtGui.so.4
#25 0xb623ae8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#26 0xb62423a7 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#27 0xb701540a in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#28 0xb6d1e13b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#29 0xb6241302 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4
#30 0xb62ccd58 in ?? () from /usr/lib/libQtGui.so.4
#31 0xb62cc1e1 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#32 0xb62fb2ea in ?? () from /usr/lib/libQtGui.so.4
#33 0xb59c45e5 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#34 0xb59c82d8 in ?? () from /lib/libglib-2.0.so.0
#35 0xb59c84b8 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#36 0xb6d49e35 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#37 0xb62fae15 in ?? () from /usr/lib/libQtGui.so.4
#38 0xb6d1c759 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#39 0xb6d1cbaa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#40 0xb6d21e3f in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#41 0xb623af27 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#42 0xb392038b in kdemain () from /usr/lib/libkdeinit4_rekonq.so
#43 0x0804e133 in _start ()

Reported using DrKonqi
Comment 1 Andrea Diamantini 2010-08-02 12:29:01 UTC
This HAS to be fixed for 1.0...
Comment 2 Andrea Diamantini 2010-08-02 13:17:38 UTC
*** Bug 227022 has been marked as a duplicate of this bug. ***
Comment 3 Kubuntiac 2010-08-04 19:56:07 UTC
*** Bug 246716 has been marked as a duplicate of this bug. ***
Comment 4 Andrea Diamantini 2010-08-25 12:35:44 UTC
commit d20575b65d9b6d0f13e3b284bff32d181b19a888
Author: Andrea Diamantini <adjam7@gmail.com>
Date:   Wed Aug 25 12:36:37 2010 +0200

    Adding QWeakPointers for the walletbar and the previewselectorbar.
    While this can be overkilling for the previewselectorbar, I'd like doing it for all the
    bars in our next stable, moving them INSIDE the webtab class, so that each webtab has its findbar, its
    zoombar and so on.
    
    This should fix
    BUG: 243508
    
    Please, let me know if it's not the case.. Thanks!

diff --git a/src/webtab.cpp b/src/webtab.cpp
index 0b58d7c..d5c5b47 100644
--- a/src/webtab.cpp
+++ b/src/webtab.cpp
@@ -92,6 +92,8 @@ WebTab::WebTab(QWidget *parent)
 
 WebTab::~WebTab()
 {
+    _walletBar.clear();
+    _previewSelectorBar.clear();
 }
 
 
@@ -131,6 +133,12 @@ void WebTab::updateProgress(int p)
 void WebTab::loadFinished(bool)
 {
     m_progress = 0;
+    if(_walletBar.isNull())
+    {
+        kDebug() << "OK, it's null";
+    }
+    else
+        kDebug() << "NO, it's NOT null";
 }
 
 
@@ -142,27 +150,35 @@ void WebTab::createWalletBar(const QString &key, const QUrl &url)
     if (blackList.contains(urlString))
         return;
 
+    if(!_walletBar.isNull())
+    {
+        _walletBar.clear();
+    }
     KWebWallet *wallet = page()->wallet();
-    WalletBar *walletBar = new WalletBar(this);
-    walletBar->onSaveFormData(key, url);
-    qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, walletBar);
+    _walletBar = new WalletBar(this);
+    _walletBar.data()->onSaveFormData(key, url);
+    qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, _walletBar.data() );
 
-    connect(walletBar, SIGNAL(saveFormDataAccepted(const QString &)),
+    connect(_walletBar.data(), SIGNAL(saveFormDataAccepted(const QString &)),
             wallet, SLOT(acceptSaveFormDataRequest(const QString &)));
-    connect(walletBar, SIGNAL(saveFormDataRejected(const QString &)),
+    connect(_walletBar.data(), SIGNAL(saveFormDataRejected(const QString &)),
             wallet, SLOT(rejectSaveFormDataRequest(const QString &)));
 }
 
 
 void WebTab::createPreviewSelectorBar(int index)
 {
-    PreviewSelectorBar *bar = new PreviewSelectorBar(index, this);
-    qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, bar);
+    if(!_previewSelectorBar.isNull())
+    {
+        _previewSelectorBar.clear();
+    }
+    _previewSelectorBar = new PreviewSelectorBar(index, this);
+    qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, _previewSelectorBar.data());
 
-    connect(page(), SIGNAL(loadStarted()), bar, SLOT(loadProgress()));
-    connect(page(), SIGNAL(loadProgress(int)), bar, SLOT(loadProgress()));
-    connect(page(), SIGNAL(loadFinished(bool)), bar, SLOT(loadFinished()));
-    connect(page()->mainFrame(), SIGNAL(urlChanged(QUrl)), bar, SLOT(verifyUrl()));
+    connect(page(),             SIGNAL(loadStarted()),      _previewSelectorBar.data(), SLOT(loadProgress()));
+    connect(page(),             SIGNAL(loadProgress(int)),  _previewSelectorBar.data(), SLOT(loadProgress()));
+    connect(page(),             SIGNAL(loadFinished(bool)), _previewSelectorBar.data(), SLOT(loadFinished()));
+    connect(page()->mainFrame(), SIGNAL(urlChanged(QUrl)),  _previewSelectorBar.data(), SLOT(verifyUrl()));
 }
 
 
diff --git a/src/webtab.h b/src/webtab.h
index e34bbcc..a24418e 100644
--- a/src/webtab.h
+++ b/src/webtab.h
@@ -41,6 +41,11 @@
 
 // Qt Includes
 #include <QWidget>
+#include <QWeakPointer>
+
+// Forward Declarations
+class WalletBar;
+class PreviewSelectorBar;
 
 
 class REKONQ_TESTS_EXPORT WebTab : public QWidget
@@ -74,6 +79,9 @@ private:
     WebView *_view;
     
     int m_progress;
+
+    QWeakPointer<WalletBar> _walletBar;
+    QWeakPointer<PreviewSelectorBar> _previewSelectorBar;
 };
 
 #endif