diff --git a/libkdecorations/kdecoration.cpp b/libkdecorations/kdecoration.cpp index a28b847f34..4e9f4f5f7f 100644 --- a/libkdecorations/kdecoration.cpp +++ b/libkdecorations/kdecoration.cpp @@ -57,17 +57,18 @@ public: KDecorationPrivate(KDecorationBridge *b) : bridge(b) , alphaEnabled(false) + , w() { } KDecorationBridge *bridge; bool alphaEnabled; + QScopedPointer w; }; KDecorationOptions* KDecoration::options_; KDecoration::KDecoration(KDecorationBridge* bridge, KDecorationFactory* factory) - : w_(NULL), - factory_(factory), + : factory_(factory), d(new KDecorationPrivate(bridge)) { factory->addDecoration(this); @@ -80,7 +81,6 @@ KDecoration::KDecoration(KDecorationBridge* bridge, KDecorationFactory* factory) KDecoration::~KDecoration() { factory()->removeDecoration(this); - delete w_; delete d; } @@ -102,8 +102,8 @@ void KDecoration::createMainWidget(Qt::WindowFlags flags) void KDecoration::setMainWidget(QWidget* w) { - assert(w_ == NULL); - w_ = w; + assert(d->w.isNull()); + d->w.reset(w); w->setMouseTracking(true); widget()->resize(geometry().size()); } @@ -507,12 +507,12 @@ KDecorationDefines::Position KDecoration::titlebarPosition() QWidget* KDecoration::widget() { - return w_; + return d->w.data(); } const QWidget* KDecoration::widget() const { - return w_; + return d->w.data(); } KDecorationFactory* KDecoration::factory() const diff --git a/libkdecorations/kdecoration.h b/libkdecorations/kdecoration.h index de4e53c578..695574a85f 100644 --- a/libkdecorations/kdecoration.h +++ b/libkdecorations/kdecoration.h @@ -1156,7 +1156,6 @@ protected Q_SLOTS: QRegion region(KDecorationDefines::Region r); private: - QWidget* w_; KDecorationFactory* factory_; friend class KDecorationOptions; // for options_ static KDecorationOptions* options_;