diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2018-07-10 05:34:54 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2018-09-28 02:22:19 +0000 |
commit | 9c72ae61aa28c1e26c7ada21b2853273976a093d (patch) | |
tree | cee61e3a9d5700a1bf77bc23cddf37484bb3271a | |
parent | 353a58ceb96508f0cd6d44b4050bfb69ae2a1c8a (diff) |
wasm: make maximized and fullscreen windows not draggable
Also make fullscreen windows not have a titlebar
Task-number: QTBUG-69318
Change-Id: I017fc40fecb9f46d6540ffb72a71c9b62097a368
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
-rw-r--r-- | src/plugins/platforms/wasm/qwasmcompositor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.cpp | 32 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.cpp | 15 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.h | 3 |
4 files changed, 31 insertions, 21 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index f3ea013325..3dc6b7d2f3 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -642,7 +642,7 @@ void QWasmCompositor::drawShadePanel(QWasmTitleBarOptions options, QPainter *pai void QWasmCompositor::drawWindow(QOpenGLTextureBlitter *blitter, QWasmScreen *screen, QWasmWindow *window) { - if (window->window()->type() != Qt::Popup) + if (window->window()->type() != Qt::Popup && !(window->m_windowState & Qt::WindowFullScreen)) drawWindowDecorations(blitter, screen, window); drawWindowContent(blitter, screen, window); } diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index 6545eda4e3..95bedf701c 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -362,13 +362,15 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven if (mouseEvent->button == 0) { pressedWindow = window2; buttonEventType = QEvent::MouseButtonPress; - if (htmlWindow && window2->flags().testFlag(Qt::WindowTitleHint) && htmlWindow->isPointOnTitle(point)) - draggedWindow = window2; - else if (htmlWindow && htmlWindow->isPointOnResizeRegion(point)) { - draggedWindow = window2; - resizeMode = htmlWindow->resizeModeAtPoint(point); - resizePoint = point; - resizeStartRect = window2->geometry(); + if (!(htmlWindow->m_windowState & Qt::WindowFullScreen) && !(htmlWindow->m_windowState & Qt::WindowMaximized)) { + if (htmlWindow && window2->flags().testFlag(Qt::WindowTitleHint) && htmlWindow->isPointOnTitle(point)) + draggedWindow = window2; + else if (htmlWindow && htmlWindow->isPointOnResizeRegion(point)) { + draggedWindow = window2; + resizeMode = htmlWindow->resizeModeAtPoint(point); + resizePoint = point; + resizeStartRect = window2->geometry(); + } } } @@ -399,14 +401,16 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven case 8://move //drag event { buttonEventType = QEvent::MouseMove; - if (resizeMode == QWasmWindow::ResizeNone && draggedWindow) { - draggedWindow->setX(draggedWindow->x() + mouseEvent->movementX); - draggedWindow->setY(draggedWindow->y() + mouseEvent->movementY); - } + if (!(htmlWindow->m_windowState & Qt::WindowFullScreen) && !(htmlWindow->m_windowState & Qt::WindowMaximized)) { + if (resizeMode == QWasmWindow::ResizeNone && draggedWindow) { + draggedWindow->setX(draggedWindow->x() + mouseEvent->movementX); + draggedWindow->setY(draggedWindow->y() + mouseEvent->movementY); + } - if (resizeMode != QWasmWindow::ResizeNone) { - QPoint delta = QPoint(mouseEvent->canvasX, mouseEvent->canvasY) - resizePoint; - resizeWindow(draggedWindow, resizeMode, resizeStartRect, delta); + if (resizeMode != QWasmWindow::ResizeNone && !(htmlWindow->m_windowState & Qt::WindowFullScreen)) { + QPoint delta = QPoint(mouseEvent->canvasX, mouseEvent->canvasY) - resizePoint; + resizeWindow(draggedWindow, resizeMode, resizeStartRect, delta); + } } break; } diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp index 0489813929..c4167be71e 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.cpp +++ b/src/plugins/platforms/wasm/qwasmwindow.cpp @@ -83,8 +83,6 @@ void QWasmWindow::initialize() setWindowState(window()->windowStates()); setWindowFlags(window()->flags()); setWindowTitle(window()->title()); - m_hasTitle = window()->flags().testFlag(Qt::WindowTitleHint) && m_needsCompositor; - if (window()->isTopLevel()) setWindowIcon(window()->icon()); m_normalGeometry = rect; @@ -135,8 +133,8 @@ void QWasmWindow::setVisible(bool visible) QMargins QWasmWindow::frameMargins() const { - int border = m_hasTitle ? 4. * (qreal(qt_defaultDpiX()) / 96.0) : 0; - int titleBarHeight = m_hasTitle ? titleHeight() : 0; + int border = hasTitleBar() ? 4. * (qreal(qt_defaultDpiX()) / 96.0) : 0; + int titleBarHeight = hasTitleBar() ? titleHeight() : 0; QMargins margins; margins.setLeft(border); @@ -177,7 +175,7 @@ void QWasmWindow::injectMousePressed(const QPoint &local, const QPoint &global, Q_UNUSED(local); Q_UNUSED(mods); - if (!m_hasTitle || button != Qt::LeftButton) + if (!hasTitleBar() || button != Qt::LeftButton) return; if (maxButtonRect().contains(global)) @@ -198,7 +196,7 @@ void QWasmWindow::injectMouseReleased(const QPoint &local, const QPoint &global, Q_UNUSED(local); Q_UNUSED(mods); - if (!m_hasTitle || button != Qt::LeftButton) + if (!hasTitleBar() || button != Qt::LeftButton) return; if (closeButtonRect().contains(global) && m_activeControl == QWasmCompositor::SC_TitleBarCloseButton) @@ -395,4 +393,9 @@ void QWasmWindow::requestUpdate() QPlatformWindow::requestUpdate(); } +bool QWasmWindow::hasTitleBar() const +{ + return !(m_windowState & Qt::WindowFullScreen) && (window()->flags().testFlag(Qt::WindowTitleHint) && m_needsCompositor); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/wasm/qwasmwindow.h b/src/plugins/platforms/wasm/qwasmwindow.h index a0c463e796..cbbce99aeb 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.h +++ b/src/plugins/platforms/wasm/qwasmwindow.h @@ -105,6 +105,7 @@ public: protected: void invalidate(); + bool hasTitleBar() const; protected: friend class QWasmScreen; @@ -119,6 +120,8 @@ protected: WId m_winid = 0; bool m_hasTitle = false; bool m_needsCompositor = false; + friend class QWasmCompositor; + friend class QWasmEventTranslator; }; QT_END_NAMESPACE #endif // QWASMWINDOW_H |