diff --git a/libkdecorations/kcommondecoration.cpp b/libkdecorations/kcommondecoration.cpp index 155f5ae083..e0e791864f 100644 --- a/libkdecorations/kcommondecoration.cpp +++ b/libkdecorations/kcommondecoration.cpp @@ -1028,13 +1028,30 @@ QRect KCommonDecoration::transparentRect() const return wrapper->transparentRect(); } +class KCommonDecorationButtonPrivate +{ +public: + KCommonDecorationButtonPrivate(ButtonType t, KCommonDecoration *deco); + KCommonDecoration *decoration; + ButtonType type; + int realizeButtons; + QSize size; + Qt::MouseButtons lastMouse; + bool isLeft; +}; + +KCommonDecorationButtonPrivate::KCommonDecorationButtonPrivate(ButtonType t, KCommonDecoration* deco) + : decoration(deco) + , type(t) + , realizeButtons(Qt::LeftButton) + , lastMouse(Qt::NoButton) + , isLeft(true) +{ +} + KCommonDecorationButton::KCommonDecorationButton(ButtonType type, KCommonDecoration *parent) : QAbstractButton(parent ? parent->widget() : 0), - m_decoration(parent), - m_type(type), - m_realizeButtons(Qt::LeftButton), - m_lastMouse(Qt::NoButton), - m_isLeft(true) + d(new KCommonDecorationButtonPrivate(type, parent)) { setCursor(Qt::ArrowCursor); } @@ -1045,42 +1062,42 @@ KCommonDecorationButton::~KCommonDecorationButton() KCommonDecoration *KCommonDecorationButton::decoration() const { - return m_decoration; + return d->decoration; } ButtonType KCommonDecorationButton::type() const { - return m_type; + return d->type; } bool KCommonDecorationButton::isLeft() const { - return m_isLeft; + return d->isLeft; } void KCommonDecorationButton::setLeft(bool left) { - m_isLeft = left; + d->isLeft = left; } void KCommonDecorationButton::setRealizeButtons(int btns) { - m_realizeButtons = btns; + d->realizeButtons = btns; } void KCommonDecorationButton::setSize(const QSize &s) { - if (!m_size.isValid() || s != size()) { - m_size = s; + if (!d->size.isValid() || s != size()) { + d->size = s; - setFixedSize(m_size); + setFixedSize(d->size); reset(SizeChange); } } QSize KCommonDecorationButton::sizeHint() const { - return m_size; + return d->size; } void KCommonDecorationButton::setTipText(const QString &tip) @@ -1104,18 +1121,18 @@ void KCommonDecorationButton::setOn(bool on) void KCommonDecorationButton::mousePressEvent(QMouseEvent* e) { - m_lastMouse = e->button(); + d->lastMouse = e->button(); // pass on event after changing button to LeftButton - QMouseEvent me(e->type(), e->pos(), (e->button()&m_realizeButtons) ? Qt::LeftButton : Qt::NoButton, e->buttons(), e->modifiers()); + QMouseEvent me(e->type(), e->pos(), (e->button()&d->realizeButtons) ? Qt::LeftButton : Qt::NoButton, e->buttons(), e->modifiers()); QAbstractButton::mousePressEvent(&me); } void KCommonDecorationButton::mouseReleaseEvent(QMouseEvent* e) { - m_lastMouse = e->button(); + d->lastMouse = e->button(); // pass on event after changing button to LeftButton - QMouseEvent me(e->type(), e->pos(), (e->button()&m_realizeButtons) ? Qt::LeftButton : Qt::NoButton, e->buttons(), e->modifiers()); + QMouseEvent me(e->type(), e->pos(), (e->button()&d->realizeButtons) ? Qt::LeftButton : Qt::NoButton, e->buttons(), e->modifiers()); QAbstractButton::mouseReleaseEvent(&me); } @@ -1437,7 +1454,7 @@ KDecoration::WindowOperation KCommonDecoration::buttonToWindowOperation(Qt::Mous Qt::MouseButtons KCommonDecorationButton::lastMousePress() const { - return m_lastMouse; + return d->lastMouse; } // kate: space-indent on; indent-width 4; mixedindent off; indent-mode cstyle; diff --git a/libkdecorations/kcommondecoration.h b/libkdecorations/kcommondecoration.h index 60d55be3cf..766b796be3 100644 --- a/libkdecorations/kcommondecoration.h +++ b/libkdecorations/kcommondecoration.h @@ -511,15 +511,7 @@ protected: void mouseReleaseEvent(QMouseEvent *e); private: - KCommonDecoration *m_decoration; - ButtonType m_type; - int m_realizeButtons; - QSize m_size; - Qt::MouseButtons m_lastMouse; - - bool m_isLeft; - - KCommonDecorationButtonPrivate *d; + const QScopedPointer d; }; /** @} */