diff --git a/components/qtmaterialdrawer.cpp b/components/qtmaterialdrawer.cpp index d19262d..973ce9b 100644 --- a/components/qtmaterialdrawer.cpp +++ b/components/qtmaterialdrawer.cpp @@ -14,13 +14,34 @@ * \internal */ +/*! + * \internal + */ QtMaterialDrawerPrivate::QtMaterialDrawerPrivate(QtMaterialDrawer *q) - : q_ptr(q), - stateMachine(new QtMaterialDrawerStateMachine(q)), - window(new QWidget), - width(250), - clickToClose(false) + : q_ptr(q) { +} + +/*! + * \internal + */ +QtMaterialDrawerPrivate::~QtMaterialDrawerPrivate() +{ +} + +/*! + * \internal + */ +void QtMaterialDrawerPrivate::init() +{ + Q_Q(QtMaterialDrawer); + + stateMachine = new QtMaterialDrawerStateMachine(q); + window = new QWidget; + width = 250; + clickToClose = false; + autoRaise = true; + QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(window); @@ -28,7 +49,6 @@ QtMaterialDrawerPrivate::QtMaterialDrawerPrivate(QtMaterialDrawer *q) q->setFixedWidth(width+16); stateMachine->start(); - QCoreApplication::processEvents(); } @@ -40,6 +60,7 @@ QtMaterialDrawer::QtMaterialDrawer(QWidget *parent) : QtMaterialOverlayWidget(parent), d_ptr(new QtMaterialDrawerPrivate(this)) { + d_func()->init(); } QtMaterialDrawer::~QtMaterialDrawer() @@ -90,12 +111,29 @@ bool QtMaterialDrawer::clickOutsideToClose() const return d->clickToClose; } +void QtMaterialDrawer::setAutoRaise(bool state) +{ + Q_D(QtMaterialDrawer); + + d->autoRaise = state; +} + +bool QtMaterialDrawer::autoRaise() const +{ + Q_D(const QtMaterialDrawer); + + return d->autoRaise; +} + void QtMaterialDrawer::openDrawer() { Q_D(QtMaterialDrawer); emit d->stateMachine->enterOpenedState(); - raise(); + + if (d->autoRaise) { + raise(); + } } void QtMaterialDrawer::closeDrawer() diff --git a/components/qtmaterialdrawer.h b/components/qtmaterialdrawer.h index 2ceb1f9..6dd69e8 100644 --- a/components/qtmaterialdrawer.h +++ b/components/qtmaterialdrawer.h @@ -23,6 +23,9 @@ public: void setClickOutsideToClose(bool state); bool clickOutsideToClose() const; + void setAutoRaise(bool state); + bool autoRaise() const; + public slots: void openDrawer(); void closeDrawer(); diff --git a/components/qtmaterialdrawer_p.h b/components/qtmaterialdrawer_p.h index 671ee3b..1a1247f 100644 --- a/components/qtmaterialdrawer_p.h +++ b/components/qtmaterialdrawer_p.h @@ -13,12 +13,16 @@ class QtMaterialDrawerPrivate public: QtMaterialDrawerPrivate(QtMaterialDrawer *q); + ~QtMaterialDrawerPrivate(); + + void init(); QtMaterialDrawer *const q_ptr; - QtMaterialDrawerStateMachine *const stateMachine; - QWidget *const window; - int width; - bool clickToClose; + QtMaterialDrawerStateMachine *stateMachine; + QWidget *window; + int width; + bool clickToClose; + bool autoRaise; }; #endif // DRAWER_P_H