diff options
Diffstat (limited to 'src/widgets/widgets/qsizegrip.cpp')
-rw-r--r-- | src/widgets/widgets/qsizegrip.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp index 0e6ac5332a..2500983450 100644 --- a/src/widgets/widgets/qsizegrip.cpp +++ b/src/widgets/widgets/qsizegrip.cpp @@ -5,7 +5,7 @@ #include "qapplication.h" #include "qevent.h" -#include "qpainter.h" +#include "qstylepainter.h" #include "qwindow.h" #include <qpa/qplatformwindow.h> #include "qstyle.h" @@ -18,6 +18,8 @@ #include <qpa/qplatformtheme.h> #include <QtWidgets/qabstractscrollarea.h> +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE static QWidget *qt_sizegrip_topLevelWidget(QWidget* w) @@ -73,7 +75,7 @@ public: void _q_showIfNotHidden() { Q_Q(QSizeGrip); - bool showSizeGrip = !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide)); + bool showSizeGrip = !isExplicitlyHidden(); updateTopLevelWidget(); if (tlw && showSizeGrip) { Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen; @@ -212,11 +214,11 @@ void QSizeGrip::paintEvent(QPaintEvent *event) { Q_UNUSED(event); Q_D(QSizeGrip); - QPainter painter(this); + QStylePainter painter(this); QStyleOptionSizeGrip opt; opt.initFrom(this); opt.corner = d->m_corner; - style()->drawControl(QStyle::CE_SizeGrip, &opt, &painter, this); + painter.drawControl(QStyle::CE_SizeGrip, opt); } /*! @@ -449,7 +451,7 @@ void QSizeGrip::setVisible(bool visible) bool QSizeGrip::eventFilter(QObject *o, QEvent *e) { Q_D(QSizeGrip); - if ((isHidden() && testAttribute(Qt::WA_WState_ExplicitShowHide)) + if (d->isExplicitlyHidden() || e->type() != QEvent::WindowStateChange || o != d->tlw) { return QWidget::eventFilter(o, e); |