diff options
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qapplication.cpp | 73 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_p.h | 4 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_qpa.cpp | 1 | ||||
-rw-r--r-- | src/widgets/kernel/qlayout.cpp | 4 | ||||
-rw-r--r-- | src/widgets/kernel/qlayoutitem.cpp | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qsizepolicy.h | 5 | ||||
-rw-r--r-- | src/widgets/kernel/qsizepolicy.qdoc | 17 | ||||
-rw-r--r-- | src/widgets/kernel/qtooltip.cpp | 36 | ||||
-rw-r--r-- | src/widgets/kernel/qtooltip.h | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 63 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.h | 3 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget_p.h | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 2 |
13 files changed, 163 insertions, 51 deletions
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index b918bdb9e9..af3d134a5a 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -1852,8 +1852,11 @@ bool QApplication::event(QEvent *e) if (showToolTip) { QHelpEvent e(QEvent::ToolTip, d->toolTipPos, d->toolTipGlobalPos); QApplication::sendEvent(d->toolTipWidget, &e); - if (e.isAccepted()) - d->toolTipFallAsleep.start(2000, this); + if (e.isAccepted()) { + QStyle *s = d->toolTipWidget->style(); + int sleepDelay = s->styleHint(QStyle::SH_ToolTip_FallAsleepDelay, 0, d->toolTipWidget, 0); + d->toolTipFallAsleep.start(sleepDelay, this); + } } } } else if (te->timerId() == d->toolTipFallAsleep.timerId()) { @@ -2949,12 +2952,8 @@ bool QApplication::notify(QObject *receiver, QEvent *e) QPoint relpos = mouse->pos(); if (e->spontaneous()) { - - if (e->type() == QEvent::MouseButtonPress) { - QApplicationPrivate::giveFocusAccordingToFocusPolicy(w, - Qt::ClickFocus, - Qt::MouseFocusReason); - } + if (e->type() != QEvent::MouseMove) + QApplicationPrivate::giveFocusAccordingToFocusPolicy(w, e, relpos); // ### Qt 5 These dynamic tool tips should be an OPT-IN feature. Some platforms // like Mac OS X (probably others too), can optimize their views by not @@ -2967,7 +2966,9 @@ bool QApplication::notify(QObject *receiver, QEvent *e) d->toolTipWidget = w; d->toolTipPos = relpos; d->toolTipGlobalPos = mouse->globalPos(); - d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive()?20:700, this); + QStyle *s = d->toolTipWidget->style(); + int wakeDelay = s->styleHint(QStyle::SH_ToolTip_WakeUpDelay, 0, d->toolTipWidget, 0); + d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive() ? 20 : wakeDelay, this); } } @@ -3042,11 +3043,8 @@ bool QApplication::notify(QObject *receiver, QEvent *e) QPoint relpos = wheel->pos(); bool eventAccepted = wheel->isAccepted(); - if (e->spontaneous()) { - QApplicationPrivate::giveFocusAccordingToFocusPolicy(w, - Qt::WheelFocus, - Qt::MouseFocusReason); - } + if (e->spontaneous()) + QApplicationPrivate::giveFocusAccordingToFocusPolicy(w, e, relpos); while (w) { QWheelEvent we(relpos, wheel->globalPos(), wheel->pixelDelta(), wheel->angleDelta(), wheel->delta(), wheel->orientation(), wheel->buttons(), @@ -3234,6 +3232,11 @@ bool QApplication::notify(QObject *receiver, QEvent *e) QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e); const bool acceptTouchEvents = widget->testAttribute(Qt::WA_AcceptTouchEvents); + if (e->type() != QEvent::TouchUpdate && acceptTouchEvents && e->spontaneous()) { + const QPoint localPos = touchEvent->touchPoints()[0].pos().toPoint(); + QApplicationPrivate::giveFocusAccordingToFocusPolicy(widget, e, localPos); + } + touchEvent->setTarget(widget); touchEvent->setAccepted(acceptTouchEvents); @@ -3251,16 +3254,16 @@ bool QApplication::notify(QObject *receiver, QEvent *e) QWidget *widget = static_cast<QWidget *>(receiver); QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e); bool eventAccepted = touchEvent->isAccepted(); - if (widget->testAttribute(Qt::WA_AcceptTouchEvents) && e->spontaneous()) { - // give the widget focus if the focus policy allows it - QApplicationPrivate::giveFocusAccordingToFocusPolicy(widget, - Qt::ClickFocus, - Qt::MouseFocusReason); + bool acceptTouchEvents = widget->testAttribute(Qt::WA_AcceptTouchEvents); + + if (acceptTouchEvents && e->spontaneous()) { + const QPoint localPos = touchEvent->touchPoints()[0].pos().toPoint(); + QApplicationPrivate::giveFocusAccordingToFocusPolicy(widget, e, localPos); } while (widget) { // first, try to deliver the touch event - bool acceptTouchEvents = widget->testAttribute(Qt::WA_AcceptTouchEvents); + acceptTouchEvents = widget->testAttribute(Qt::WA_AcceptTouchEvents); touchEvent->setTarget(widget); touchEvent->setAccepted(acceptTouchEvents); QPointer<QWidget> p = widget; @@ -3725,20 +3728,40 @@ bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event) return QGuiApplication::sendSpontaneousEvent(receiver, event); } - -void QApplicationPrivate::giveFocusAccordingToFocusPolicy(QWidget *widget, - Qt::FocusPolicy focusPolicy, - Qt::FocusReason focusReason) +void QApplicationPrivate::giveFocusAccordingToFocusPolicy(QWidget *widget, QEvent *event, QPoint localPos) { + const bool setFocusOnRelease = QGuiApplication::styleHints()->setFocusOnTouchRelease(); + Qt::FocusPolicy focusPolicy = Qt::ClickFocus; + + switch (event->type()) { + case QEvent::MouseButtonPress: + case QEvent::TouchBegin: + if (setFocusOnRelease) + return; + break; + case QEvent::MouseButtonRelease: + case QEvent::TouchEnd: + if (!setFocusOnRelease) + return; + break; + case QEvent::Wheel: + focusPolicy = Qt::WheelFocus; + break; + default: + return; + } + QWidget *focusWidget = widget; while (focusWidget) { if (focusWidget->isEnabled() + && focusWidget->rect().contains(localPos) && QApplicationPrivate::shouldSetFocus(focusWidget, focusPolicy)) { - focusWidget->setFocus(focusReason); + focusWidget->setFocus(Qt::MouseFocusReason); break; } if (focusWidget->isWindow()) break; + localPos += focusWidget->pos(); focusWidget = focusWidget->parentWidget(); } } diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 87cf259ba5..29c6902c78 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -294,9 +294,7 @@ public: private: static QApplicationPrivate *self; - static void giveFocusAccordingToFocusPolicy(QWidget *w, - Qt::FocusPolicy focusPolicy, - Qt::FocusReason focusReason); + static void giveFocusAccordingToFocusPolicy(QWidget *w, QEvent *event, QPoint localPos); static bool shouldSetFocus(QWidget *w, Qt::FocusPolicy policy); diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp index 852b6b9697..0fc065e74b 100644 --- a/src/widgets/kernel/qapplication_qpa.cpp +++ b/src/widgets/kernel/qapplication_qpa.cpp @@ -198,7 +198,6 @@ void QApplicationPrivate::closePopup(QWidget *popup) // mouse release event or inside qt_replay_popup_mouse_event = false; } else { // mouse press event - QGuiApplicationPrivate::mousePressTime -= 10000; // avoid double click qt_replay_popup_mouse_event = true; } diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index a65c34adf5..8541dd984d 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -1443,7 +1443,7 @@ QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy) policy.bits.hfw << 8 | // [8] policy.bits.ctype << 9 | // [9, 13] policy.bits.wfh << 14 | // [14] - //policy.bits.padding << 15 | // [15] + policy.bits.retainSizeWhenHidden << 15 | // [15] policy.bits.verStretch << 16 | // [16, 23] policy.bits.horStretch << 24); // [24, 31] return stream << data; @@ -1468,7 +1468,7 @@ QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy) policy.bits.hfw = VALUE_OF_BITS(data, 8, 1); policy.bits.ctype = VALUE_OF_BITS(data, 9, 5); policy.bits.wfh = VALUE_OF_BITS(data, 14, 1); - policy.bits.padding = 0; + policy.bits.retainSizeWhenHidden = VALUE_OF_BITS(data, 15, 1); policy.bits.verStretch = VALUE_OF_BITS(data, 16, 8); policy.bits.horStretch = VALUE_OF_BITS(data, 24, 8); return stream; diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp index 223bcf1d9b..a99ea77ce2 100644 --- a/src/widgets/kernel/qlayoutitem.cpp +++ b/src/widgets/kernel/qlayoutitem.cpp @@ -682,7 +682,7 @@ bool QSpacerItem::isEmpty() const */ bool QWidgetItem::isEmpty() const { - return wid->isHidden() || wid->isWindow(); + return (wid->isHidden() && !wid->sizePolicy().retainSizeWhenHidden()) || wid->isWindow(); } /*! diff --git a/src/widgets/kernel/qsizepolicy.h b/src/widgets/kernel/qsizepolicy.h index 2fe85cbe0c..9c6d67410a 100644 --- a/src/widgets/kernel/qsizepolicy.h +++ b/src/widgets/kernel/qsizepolicy.h @@ -131,6 +131,9 @@ public: void setHorizontalStretch(int stretchFactor) { bits.horStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); } void setVerticalStretch(int stretchFactor) { bits.verStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); } + bool retainSizeWhenHidden() const { return bits.retainSizeWhenHidden; } + void setRetainSizeWhenHidden(bool retainSize) { bits.retainSizeWhenHidden = retainSize; } + void transpose(); @@ -150,7 +153,7 @@ private: quint32 ctype : 5; quint32 hfw : 1; quint32 wfh : 1; - quint32 padding : 1; // feel free to use + quint32 retainSizeWhenHidden : 1; } bits; quint32 data; }; diff --git a/src/widgets/kernel/qsizepolicy.qdoc b/src/widgets/kernel/qsizepolicy.qdoc index 6af694d999..2c088113e1 100644 --- a/src/widgets/kernel/qsizepolicy.qdoc +++ b/src/widgets/kernel/qsizepolicy.qdoc @@ -341,6 +341,23 @@ */ /*! + \fn void QSizePolicy::retainSizeWhenHidden() const + + Returns if the layout should retain the widgets size when it is hidden. This is by default false. + + \sa setRetainSizeWhenHidden() +*/ + +/*! + \fn void QSizePolicy::setRetainSizeWhenHidden(bool retainSize) + + Set if a layout should retain the widgets size when it is hidden. + If \a retainSize is true the layout will not be changed by hiding the widget. + + \sa retainSizeWhenHidden() +*/ + +/*! \enum QSizePolicy::ControlType \since 4.3 diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp index 864ed6a555..8399f94976 100644 --- a/src/widgets/kernel/qtooltip.cpp +++ b/src/widgets/kernel/qtooltip.cpp @@ -120,7 +120,7 @@ class QTipLabel : public QLabel { Q_OBJECT public: - QTipLabel(const QString &text, QWidget *w); + QTipLabel(const QString &text, QWidget *w, int msecDisplayTime); ~QTipLabel(); static QTipLabel *instance; @@ -130,11 +130,11 @@ public: bool fadingOut; - void reuseTip(const QString &text); + void reuseTip(const QString &text, int msecDisplayTime); void hideTip(); void hideTipImmediately(); void setTipRect(QWidget *w, const QRect &r); - void restartExpireTimer(); + void restartExpireTimer(int msecDisplayTime); bool tipChanged(const QPoint &pos, const QString &text, QObject *o); void placeTip(const QPoint &pos, QWidget *w); @@ -166,7 +166,7 @@ private: QTipLabel *QTipLabel::instance = 0; -QTipLabel::QTipLabel(const QString &text, QWidget *w) +QTipLabel::QTipLabel(const QString &text, QWidget *w, int msecDisplayTime) #ifndef QT_NO_STYLE_STYLESHEET : QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), styleSheetParent(0), widget(0) #else @@ -187,17 +187,19 @@ QTipLabel::QTipLabel(const QString &text, QWidget *w) setWindowOpacity(style()->styleHint(QStyle::SH_ToolTipLabel_Opacity, 0, this) / 255.0); setMouseTracking(true); fadingOut = false; - reuseTip(text); + reuseTip(text, msecDisplayTime); } -void QTipLabel::restartExpireTimer() +void QTipLabel::restartExpireTimer(int msecDisplayTime) { int time = 10000 + 40 * qMax(0, text().length()-100); + if (msecDisplayTime > 0) + time = msecDisplayTime; expireTimer.start(time, this); hideTimer.stop(); } -void QTipLabel::reuseTip(const QString &text) +void QTipLabel::reuseTip(const QString &text, int msecDisplayTime) { #ifndef QT_NO_STYLE_STYLESHEET if (styleSheetParent){ @@ -215,7 +217,7 @@ void QTipLabel::reuseTip(const QString &text) if (fm.descent() == 2 && fm.ascent() >= 11) ++extra.rheight(); resize(sizeHint() + extra); - restartExpireTimer(); + restartExpireTimer(msecDisplayTime); } void QTipLabel::paintEvent(QPaintEvent *ev) @@ -440,6 +442,18 @@ bool QTipLabel::tipChanged(const QPoint &pos, const QString &text, QObject *o) void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect) { + showText(pos, text, w, rect, -1); +} + +/*! + \since 5.2 + \overload + This is similar to QToolTip::showText(\a pos, \a text, \a w, \a rect) but with an extra parameter \a msecDisplayTime + that specifies how long the tool tip will be displayed, in milliseconds. +*/ + +void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecDisplayTime) +{ if (QTipLabel::instance && QTipLabel::instance->isVisible()){ // a tip does already exist if (text.isEmpty()){ // empty text means hide current tip QTipLabel::instance->hideTip(); @@ -452,7 +466,7 @@ void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, cons if (w) localPos = w->mapFromGlobal(pos); if (QTipLabel::instance->tipChanged(localPos, text, w)){ - QTipLabel::instance->reuseTip(text); + QTipLabel::instance->reuseTip(text, msecDisplayTime); QTipLabel::instance->setTipRect(w, rect); QTipLabel::instance->placeTip(pos, w); } @@ -462,11 +476,11 @@ void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, cons if (!text.isEmpty()){ // no tip can be reused, create new tip: #ifndef Q_WS_WIN - new QTipLabel(text, w); // sets QTipLabel::instance to itself + new QTipLabel(text, w, msecDisplayTime); // sets QTipLabel::instance to itself #else // On windows, we can't use the widget as parent otherwise the window will be // raised when the tooltip will be shown - new QTipLabel(text, QApplication::desktop()->screen(QTipLabel::getTipScreen(pos, w))); + new QTipLabel(text, QApplication::desktop()->screen(QTipLabel::getTipScreen(pos, w)), msecDisplayTime); #endif QTipLabel::instance->setTipRect(w, rect); QTipLabel::instance->placeTip(pos, w); diff --git a/src/widgets/kernel/qtooltip.h b/src/widgets/kernel/qtooltip.h index 25b138b855..ccde405342 100644 --- a/src/widgets/kernel/qtooltip.h +++ b/src/widgets/kernel/qtooltip.h @@ -53,8 +53,10 @@ class Q_WIDGETS_EXPORT QToolTip { QToolTip() Q_DECL_EQ_DELETE; public: + // ### Qt 6 - merge the three showText functions below static void showText(const QPoint &pos, const QString &text, QWidget *w = 0); static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect); + static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecShowTime); static inline void hideText() { showText(QPoint(), QString()); } static bool isVisible(); diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 49d64c5cd8..5532b04b22 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -245,6 +245,9 @@ QWidgetPrivate::QWidgetPrivate(int version) #if !defined(QT_NO_IM) , imHints(Qt::ImhNone) #endif +#ifndef QT_NO_TOOLTIP + , toolTipDuration(-1) +#endif , inheritedFontResolveMask(0) , inheritedPaletteResolveMask(0) , leftmargin(0) @@ -261,6 +264,7 @@ QWidgetPrivate::QWidgetPrivate(int version) , bg_role(QPalette::NoRole) , dirtyOpaqueChildren(1) , isOpaque(0) + , retainSizeWhenHiddenChanged(0) , inDirtyList(0) , isScrolled(0) , isMoved(0) @@ -7264,10 +7268,19 @@ void QWidget::setVisible(bool visible) create(); } -#if defined(Q_WS_X11) - if (windowType() == Qt::Window) - QApplicationPrivate::applyX11SpecificCommandLineArguments(this); -#endif + // Handling of the -qwindowgeometry, -geometry command line arguments + if (windowType() == Qt::Window && windowHandle()) { + static bool done = false; + if (!done) { + done = true; + const QRect oldGeometry = frameGeometry(); + const QRect geometry = QGuiApplicationPrivate::applyWindowGeometrySpecification(oldGeometry, windowHandle()); + if (oldGeometry.size() != geometry.size()) + resize(geometry.size()); + if (geometry.topLeft() != oldGeometry.topLeft()) + move(geometry.topLeft()); + } // done + } bool wasResized = testAttribute(Qt::WA_Resized); Qt::WindowStates initialWindowState = windowState(); @@ -8207,7 +8220,7 @@ bool QWidget::event(QEvent *event) #ifndef QT_NO_TOOLTIP case QEvent::ToolTip: if (!d->toolTip.isEmpty()) - QToolTip::showText(static_cast<QHelpEvent*>(event)->globalPos(), d->toolTip, this); + QToolTip::showText(static_cast<QHelpEvent*>(event)->globalPos(), d->toolTip, this, QRect(), d->toolTipDuration); else event->ignore(); break; @@ -9251,6 +9264,10 @@ void QWidget::setSizePolicy(QSizePolicy policy) setAttribute(Qt::WA_WState_OwnSizePolicy); if (policy == d->size_policy) return; + + if (d->size_policy.retainSizeWhenHidden() != policy.retainSizeWhenHidden()) + d->retainSizeWhenHiddenChanged = 1; + d->size_policy = policy; #ifndef QT_NO_GRAPHICSVIEW @@ -9261,6 +9278,7 @@ void QWidget::setSizePolicy(QSizePolicy policy) #endif updateGeometry(); + d->retainSizeWhenHiddenChanged = 0; if (isWindow() && d->maybeTopData()) d->topData()->sizeAdjusted = false; @@ -9389,7 +9407,9 @@ void QWidgetPrivate::updateGeometry_helper(bool forceUpdate) widgetItem->invalidateSizeCache(); QWidget *parent; if (forceUpdate || !extra || extra->minw != extra->maxw || extra->minh != extra->maxh) { - if (!q->isWindow() && !q->isHidden() && (parent = q->parentWidget())) { + const int isHidden = q->isHidden() && !size_policy.retainSizeWhenHidden() && !retainSizeWhenHiddenChanged; + + if (!q->isWindow() && !isHidden && (parent = q->parentWidget())) { if (parent->d_func()->layout) parent->d_func()->layout->invalidate(); else if (parent->isVisible()) @@ -10019,6 +10039,13 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) } #endif + // Don't set WA_NativeWindow on platforms that don't support it + if (attribute == Qt::WA_NativeWindow) { + QPlatformIntegration *platformIntegration = QGuiApplicationPrivate::platformIntegration(); + if (!platformIntegration->hasCapability(QPlatformIntegration::NativeWidgets)) + return; + } + setAttribute_internal(attribute, on, data, d); switch (attribute) { @@ -10426,6 +10453,30 @@ QString QWidget::toolTip() const Q_D(const QWidget); return d->toolTip; } + +/*! + \property QWidget::toolTipDuration + \brief the widget's tooltip duration + \since 5.2 + + Specifies how long time the tooltip will be displayed, in milliseconds. + If the value is -1 (default) the duration is calculated depending on the length of the tooltip. + + \sa toolTip +*/ + +void QWidget::setToolTipDuration(int msec) +{ + Q_D(QWidget); + d->toolTipDuration = msec; +} + +int QWidget::toolTipDuration() const +{ + Q_D(const QWidget); + return d->toolTipDuration; +} + #endif // QT_NO_TOOLTIP diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h index f90f2ee5f5..f579dbb9cd 100644 --- a/src/widgets/kernel/qwidget.h +++ b/src/widgets/kernel/qwidget.h @@ -178,6 +178,7 @@ class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified DESIGNABLE isWindow) #ifndef QT_NO_TOOLTIP Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip) + Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration) #endif #ifndef QT_NO_STATUSTIP Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip) @@ -376,6 +377,8 @@ public: #ifndef QT_NO_TOOLTIP void setToolTip(const QString &); QString toolTip() const; + void setToolTipDuration(int msec); + int toolTipDuration() const; #endif #ifndef QT_NO_STATUSTIP void setStatusTip(const QString &); diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 50f32af8b0..0580f72e11 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -644,6 +644,7 @@ public: QRegion dirty; #ifndef QT_NO_TOOLTIP QString toolTip; + int toolTipDuration; #endif #ifndef QT_NO_STATUSTIP QString statusTip; @@ -687,6 +688,7 @@ public: QPalette::ColorRole bg_role : 8; uint dirtyOpaqueChildren : 1; uint isOpaque : 1; + uint retainSizeWhenHiddenChanged : 1; uint inDirtyList : 1; uint isScrolled : 1; uint isMoved : 1; diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 675ea77b30..f2bd389769 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -559,7 +559,7 @@ void QWidgetWindow::handleWheelEvent(QWheelEvent *event) QPoint mapped = widget->mapFrom(m_widget, event->pos()); - QWheelEvent translated(mapped, event->globalPos(), event->pixelDelta(), event->angleDelta(), event->delta(), event->orientation(), event->buttons(), event->modifiers()); + QWheelEvent translated(mapped, event->globalPos(), event->pixelDelta(), event->angleDelta(), event->delta(), event->orientation(), event->buttons(), event->modifiers(), event->phase()); QGuiApplication::sendSpontaneousEvent(widget, &translated); } |