diff options
author | Liang Qi <liang.qi@qt.io> | 2016-05-12 07:31:50 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-05-12 08:33:08 +0200 |
commit | 990969655c5fb4d03682e96df9b12101f5ee9815 (patch) | |
tree | b8fb5c50285105c8bc5a938fb50f93ff9f24889d /src/gui/kernel | |
parent | a213011a53f12f101d08a04afc8fdacd2d54a232 (diff) | |
parent | e64b2234e829cc47872225debcf80d6c06db18f0 (diff) |
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
config_help.txt
configure
src/corelib/io/qprocess_wince.cpp
src/plugins/platforms/windows/qwindowstheme.cpp
src/plugins/platforms/xcb/qxcbbackingstore.cpp
tests/auto/corelib/tools/qtimezone/BLACKLIST
tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
Change-Id: I26644d1cb3b78412c8ff285e2a55bea1bd641c01
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qinputmethod.cpp | 14 | ||||
-rw-r--r-- | src/gui/kernel/qinputmethod.h | 4 | ||||
-rw-r--r-- | src/gui/kernel/qkeysequence.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qkeysequence_p.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qwindow.cpp | 11 |
5 files changed, 32 insertions, 2 deletions
diff --git a/src/gui/kernel/qinputmethod.cpp b/src/gui/kernel/qinputmethod.cpp index b81e166d3a..365b088840 100644 --- a/src/gui/kernel/qinputmethod.cpp +++ b/src/gui/kernel/qinputmethod.cpp @@ -183,6 +183,18 @@ QRectF QInputMethod::keyboardRectangle() const } /*! + \property QInputMethod::inputItemClipRectangle + \brief Input item's clipped rectangle in window coordinates. + + The clipped input rectangle is often used by various input methods to determine + how much screen real estate is available for the input method (e.g. Virtual Keyboard). +*/ +QRectF QInputMethod::inputItemClipRectangle() const +{ + Q_D(const QInputMethod); + return inputMethodQueryRectangle_helper(Qt::ImInputItemClipRectangle, d->inputItemTransform); +} +/*! Requests virtual keyboard to open. If the platform doesn't provide virtual keyboard the visibility remains false. @@ -320,6 +332,8 @@ void QInputMethod::update(Qt::InputMethodQueries queries) if (queries & (Qt::ImAnchorRectangle)) emit anchorRectangleChanged(); + if (queries & (Qt::ImInputItemClipRectangle)) + emit inputItemClipRectangleChanged(); } /*! diff --git a/src/gui/kernel/qinputmethod.h b/src/gui/kernel/qinputmethod.h index 22e4677eaa..1a63d1314e 100644 --- a/src/gui/kernel/qinputmethod.h +++ b/src/gui/kernel/qinputmethod.h @@ -57,6 +57,7 @@ class Q_GUI_EXPORT QInputMethod : public QObject Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged) Q_PROPERTY(QRectF anchorRectangle READ anchorRectangle NOTIFY anchorRectangleChanged) Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged) + Q_PROPERTY(QRectF inputItemClipRectangle READ inputItemClipRectangle NOTIFY inputItemClipRectangleChanged) Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged) Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged) Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged) @@ -76,6 +77,8 @@ public: // keyboard geometry in window coords QRectF keyboardRectangle() const; + QRectF inputItemClipRectangle() const; + enum Action { Click, ContextMenu @@ -106,6 +109,7 @@ Q_SIGNALS: void cursorRectangleChanged(); void anchorRectangleChanged(); void keyboardRectangleChanged(); + void inputItemClipRectangleChanged(); void visibleChanged(); void animatingChanged(); void localeChanged(); diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index 8a6eeb4cc9..8ccd85795b 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -1643,7 +1643,7 @@ QDataStream &operator>>(QDataStream &s, QKeySequence &keysequence) s >> keys[i]; } qAtomicDetach(keysequence.d); - std::copy(keys, keys + MaxKeys, keysequence.d->key); + std::copy(keys, keys + MaxKeys, QT_MAKE_CHECKED_ARRAY_ITERATOR(keysequence.d->key, MaxKeys)); return s; } diff --git a/src/gui/kernel/qkeysequence_p.h b/src/gui/kernel/qkeysequence_p.h index eeea0f5772..116e91c0cd 100644 --- a/src/gui/kernel/qkeysequence_p.h +++ b/src/gui/kernel/qkeysequence_p.h @@ -76,7 +76,8 @@ public: } inline QKeySequencePrivate(const QKeySequencePrivate ©) : ref(1) { - std::copy(copy.key, copy.key + MaxKeyCount, key); + std::copy(copy.key, copy.key + MaxKeyCount, + QT_MAKE_CHECKED_ARRAY_ITERATOR(key, MaxKeyCount)); } QAtomicInt ref; int key[MaxKeyCount]; diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 107ea73a56..81310ae2a2 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -2146,6 +2146,17 @@ bool QWindow::event(QEvent *ev) break; } + case QEvent::PlatformSurface: { + if ((static_cast<QPlatformSurfaceEvent *>(ev))->surfaceEventType() == QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed) { +#ifndef QT_NO_OPENGL + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (context && context->surface() == static_cast<QSurface *>(this)) + context->doneCurrent(); +#endif + } + break; + } + default: return QObject::event(ev); } |