diff options
author | Liang Qi <liang.qi@qt.io> | 2018-05-03 14:26:01 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-05-03 14:50:22 +0200 |
commit | 60fefff22f7fa259a8bdb023d1ec9a57cfd34bfb (patch) | |
tree | ab33ab6eeb08f7a72e0196ee5025790aaa01b1dd /src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp | |
parent | b1e0a71997111fc296001bc94e0da8342cf0ac97 (diff) | |
parent | da32360ffc3c7b677355c37ae54c89637c18047f (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
examples/widgets/graphicsview/elasticnodes/graphwidget.cpp
examples/widgets/graphicsview/elasticnodes/node.cpp
examples/widgets/graphicsview/elasticnodes/node.h
src/plugins/platforms/cocoa/qnsview.mm
src/plugins/platforms/cocoa/qnsview_drawing.mm
src/widgets/kernel/qmacgesturerecognizer_p.h
Change-Id: I13cf06bac75d48d779d8ee7b5c91bfc976f2a32c
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp index 5d230e2145..f211883e4f 100644 --- a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp @@ -591,6 +591,10 @@ void QQnxScreenEventHandler::handlePropertyEvent(screen_event_t event) case SCREEN_PROPERTY_FOCUS: handleKeyboardFocusPropertyEvent(window); break; + case SCREEN_PROPERTY_SIZE: + case SCREEN_PROPERTY_POSITION: + handleGeometryPropertyEvent(window); + break; default: // event ignored qScreenEventDebug() << "Ignore property event for property: " << property; @@ -617,6 +621,28 @@ void QQnxScreenEventHandler::handleKeyboardFocusPropertyEvent(screen_window_t wi m_focusLostTimer = startTimer(50); } +void QQnxScreenEventHandler::handleGeometryPropertyEvent(screen_window_t window) +{ + int pos[2]; + if (screen_get_window_property_iv(window, SCREEN_PROPERTY_POSITION, pos) != 0) { + qFatal("QQnx: failed to query window property, errno=%d", errno); + } + + int size[2]; + if (screen_get_window_property_iv(window, SCREEN_PROPERTY_SIZE, size) != 0) { + qFatal("QQnx: failed to query window property, errno=%d", errno); + } + + QRect rect(pos[0], pos[1], size[0], size[1]); + QWindow *qtWindow = QQnxIntegration::window(window); + if (qtWindow) { + qtWindow->setGeometry(rect); + QWindowSystemInterface::handleGeometryChange(qtWindow, rect); + } + + qScreenEventDebug() << qtWindow << "moved to" << rect; +} + void QQnxScreenEventHandler::timerEvent(QTimerEvent *event) { if (event->timerId() == m_focusLostTimer) { |