diff options
author | Liang Qi <liang.qi@qt.io> | 2018-12-04 09:58:43 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-12-04 09:58:43 +0100 |
commit | 5d5c00c67682bce105197b659687fd1fee8f60cf (patch) | |
tree | 686e41dc3ea121235fb73afb9157ed603f1bfeff /src/widgets/widgets/qfocusframe.cpp | |
parent | f213e818f03d35cb82e3daf187415197fd156f8e (diff) | |
parent | b82559244e2dc03f1ceff66bb67630df4300dc7c (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
src/gui/painting/qdrawhelper.cpp
Change-Id: I4916e07b635e1d3830e9b46ef7914f99bec3098e
Diffstat (limited to 'src/widgets/widgets/qfocusframe.cpp')
-rw-r--r-- | src/widgets/widgets/qfocusframe.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/widgets/widgets/qfocusframe.cpp b/src/widgets/widgets/qfocusframe.cpp index 8b8f4db86e..0992becdf0 100644 --- a/src/widgets/widgets/qfocusframe.cpp +++ b/src/widgets/widgets/qfocusframe.cpp @@ -335,7 +335,25 @@ QFocusFrame::eventFilter(QObject *o, QEvent *e) /*! \reimp */ bool QFocusFrame::event(QEvent *e) { - return QWidget::event(e); + Q_D(QFocusFrame); + + switch (e->type()) { + case QEvent::Move: + case QEvent::Resize: + if (d->widget) { + // When we're tracking a widget, we don't allow anyone to move the focus frame around. + // We do our best with event filters to make it stay on top of the widget, so trying to + // move the frame somewhere else will be flaky at best. This can e.g happen for general + // purpose code, like QAbstractScrollView, that bulk-moves all children a certain distance. + // So we need to call updateSize() when that happens to ensure that the focus frame stays + // on top of the widget. + d->updateSize(); + } + break; + default: + return QWidget::event(e); + } + return true; } QT_END_NAMESPACE |