diff options
-rw-r--r-- | src/gui/kernel/qplatformwindow.cpp | 5 | ||||
-rw-r--r-- | src/gui/kernel/qplatformwindow.h | 2 | ||||
-rw-r--r-- | src/gui/kernel/qwindow.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfswindow.cpp | 3 | ||||
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfswindow.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxwindow.cpp | 7 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxwindow.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.cpp | 3 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.h | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget_p.h | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget_qpa.cpp | 73 |
15 files changed, 18 insertions, 101 deletions
diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index 27dfd7cf40..2bc6b01b3e 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -213,13 +213,12 @@ QPoint QPlatformWindow::mapFromGlobal(const QPoint &pos) const /*! Requests setting the window state of this surface - to \a type. Returns the actual state set. + to \a type. Qt::WindowActive can be ignored. */ -Qt::WindowState QPlatformWindow::setWindowState(Qt::WindowState) +void QPlatformWindow::setWindowState(Qt::WindowState) { - return Qt::WindowNoState; } /*! diff --git a/src/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h index 2b2d227fcf..12650d6073 100644 --- a/src/gui/kernel/qplatformwindow.h +++ b/src/gui/kernel/qplatformwindow.h @@ -91,7 +91,7 @@ public: virtual void setVisible(bool visible); virtual void setWindowFlags(Qt::WindowFlags flags); - virtual Qt::WindowState setWindowState(Qt::WindowState state); + virtual void setWindowState(Qt::WindowState state); virtual WId winId() const; virtual void setParent(const QPlatformWindow *window); diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 39a6603c4b..4f1610cb21 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -828,9 +828,8 @@ void QWindow::setWindowState(Qt::WindowState state) Q_D(QWindow); if (d->platformWindow) - d->windowState = d->platformWindow->setWindowState(state); - else - d->windowState = state; + d->platformWindow->setWindowState(state); + d->windowState = state; } /*! diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 3c6dd96424..d5dbe58de9 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -99,7 +99,7 @@ public: void setCocoaGeometry(const QRect &rect); void setVisible(bool visible); void setWindowFlags(Qt::WindowFlags flags); - Qt::WindowState setWindowState(Qt::WindowState state); + void setWindowState(Qt::WindowState state); void setWindowTitle(const QString &title); void setWindowFilePath(const QString &filePath); void setWindowIcon(const QIcon &icon); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index c658a8d777..93d566da3b 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -400,12 +400,10 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags) m_windowFlags = flags; } -Qt::WindowState QCocoaWindow::setWindowState(Qt::WindowState state) +void QCocoaWindow::setWindowState(Qt::WindowState state) { if ([m_nsWindow isVisible]) syncWindowState(state); // Window state set for hidden windows take effect when show() is called. - - return state; } void QCocoaWindow::setWindowTitle(const QString &title) diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp index 9822262127..036b26a165 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp @@ -117,10 +117,9 @@ void QEglFSWindow::setGeometry(const QRect &) QPlatformWindow::setGeometry(rect); } -Qt::WindowState QEglFSWindow::setWindowState(Qt::WindowState) +void QEglFSWindow::setWindowState(Qt::WindowState) { setGeometry(QRect()); - return Qt::WindowFullScreen; } WId QEglFSWindow::winId() const diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/qeglfswindow.h index c9ef60ac9c..40a38fcb26 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.h +++ b/src/plugins/platforms/eglfs/qeglfswindow.h @@ -56,7 +56,7 @@ public: ~QEglFSWindow(); void setGeometry(const QRect &); - Qt::WindowState setWindowState(Qt::WindowState state); + void setWindowState(Qt::WindowState state); WId winId() const; EGLSurface surface() const { return m_surface; } diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp index 9dd8ad7a71..097b5788f6 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.cpp +++ b/src/plugins/platforms/qnx/qqnxwindow.cpp @@ -580,13 +580,13 @@ void QQnxWindow::requestActivateWindow() } -Qt::WindowState QQnxWindow::setWindowState(Qt::WindowState state) +void QQnxWindow::setWindowState(Qt::WindowState state) { qWindowDebug() << Q_FUNC_INFO << "state =" << state; // Prevent two calls with Qt::WindowFullScreen from changing m_unmaximizedGeometry if (m_windowState == state) - return state; + return; switch (state) { @@ -594,7 +594,7 @@ Qt::WindowState QQnxWindow::setWindowState(Qt::WindowState state) // WindowActive is not an accepted parameter according to the docs case Qt::WindowMinimized: case Qt::WindowActive: - return m_windowState; + return; case Qt::WindowMaximized: case Qt::WindowFullScreen: @@ -609,7 +609,6 @@ Qt::WindowState QQnxWindow::setWindowState(Qt::WindowState state) } m_windowState = state; - return state; } void QQnxWindow::gainedFocus() diff --git a/src/plugins/platforms/qnx/qqnxwindow.h b/src/plugins/platforms/qnx/qqnxwindow.h index d79c6785dd..90226bb9a4 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.h +++ b/src/plugins/platforms/qnx/qqnxwindow.h @@ -101,7 +101,7 @@ public: void raise(); void lower(); void requestActivateWindow(); - Qt::WindowState setWindowState(Qt::WindowState state); + void setWindowState(Qt::WindowState state); void gainedFocus(); diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index a31b09d2bf..fc3566660a 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1235,13 +1235,12 @@ void QWindowsWindow::handleWindowStateChange(Qt::WindowState state) QWindowSystemInterface::handleWindowStateChanged(window(), state); } -Qt::WindowState QWindowsWindow::setWindowState(Qt::WindowState state) +void QWindowsWindow::setWindowState(Qt::WindowState state) { if (m_data.hwnd) { setWindowState_sys(state); m_windowState = state; } - return state; } bool QWindowsWindow::isFullScreen_sys() const diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 5d898a2d41..978d1d5a53 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -160,7 +160,7 @@ public: virtual QPoint mapFromGlobal(const QPoint &pos) const; virtual void setWindowFlags(Qt::WindowFlags flags); - virtual Qt::WindowState setWindowState(Qt::WindowState state); + virtual void setWindowState(Qt::WindowState state); HWND handle() const { return m_data.hwnd; } diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index cefe1a7786..bab1884a9a 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -847,10 +847,10 @@ void QXcbWindow::changeNetWmState(bool set, xcb_atom_t one, xcb_atom_t two) Q_XCB_CALL(xcb_send_event(xcb_connection(), 0, m_screen->root(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *)&event)); } -Qt::WindowState QXcbWindow::setWindowState(Qt::WindowState state) +void QXcbWindow::setWindowState(Qt::WindowState state) { if (state == m_windowState) - return state; + return; // unset old state switch (m_windowState) { @@ -905,7 +905,6 @@ Qt::WindowState QXcbWindow::setWindowState(Qt::WindowState state) connection()->sync(); m_windowState = state; - return m_windowState; } void QXcbWindow::setNetWmWindowFlags(Qt::WindowFlags flags) diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h index e2f62401dc..bd4d18a175 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.h +++ b/src/plugins/platforms/xcb/qxcbwindow.h @@ -82,7 +82,7 @@ public: void setVisible(bool visible); void setWindowFlags(Qt::WindowFlags flags); - Qt::WindowState setWindowState(Qt::WindowState state); + void setWindowState(Qt::WindowState state); WId winId() const; void setParent(const QPlatformWindow *window); diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index c3a1d27709..8aba276966 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -803,8 +803,6 @@ public: static bool qt_widget_rgn(QWidget *, short, RgnHandle, bool); void registerTouchWindow(bool enable = true); #endif - void setMaxWindowState_helper(); - void setFullScreenSize_helper(); bool stealKeyboardGrab(bool grab); bool stealMouseGrab(bool grab); }; diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index e7564261f9..2950c19768 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -586,33 +586,6 @@ void QWidgetPrivate::hide_sys() window->setVisible(false); } -void QWidgetPrivate::setMaxWindowState_helper() -{ - Q_Q(QWidget); - - const uint old_state = data.in_set_window_state; - data.in_set_window_state = 1; - - const QRect desktop = qApp->desktop()->availableGeometry(qApp->desktop()->screenNumber(q)); - q->setGeometry(desktop); - - data.in_set_window_state = old_state; -} - -void QWidgetPrivate::setFullScreenSize_helper() -{ - Q_Q(QWidget); - - const uint old_state = data.in_set_window_state; - data.in_set_window_state = 1; - - const QRect screen = qApp->desktop()->screenGeometry(qApp->desktop()->screenNumber(q)); - q->move(screen.topLeft()); - q->resize(screen.size()); - - data.in_set_window_state = old_state; -} - Qt::WindowState effectiveState(Qt::WindowStates state) { if (state & Qt::WindowMinimized) @@ -635,7 +608,6 @@ void QWidget::setWindowState(Qt::WindowStates newstate) data->window_state = newstate; data->in_set_window_state = 1; - bool needShow = false; Qt::WindowState newEffectiveState = effectiveState(newstate); Qt::WindowState oldEffectiveState = effectiveState(oldstate); if (isWindow() && newEffectiveState != oldEffectiveState) { @@ -649,54 +621,9 @@ void QWidget::setWindowState(Qt::WindowStates newstate) Q_ASSERT(windowHandle()); windowHandle()->setWindowState(newEffectiveState); - bool supported = windowHandle()->windowState() == newEffectiveState; - - if (!supported) { - const bool wasResized = testAttribute(Qt::WA_Resized); - const bool wasMoved = testAttribute(Qt::WA_Moved); - - // undo the effects of the old emulated state - if (oldEffectiveState == Qt::WindowFullScreen) { - setParent(0, d->topData()->savedFlags); - needShow = true; - } else if (oldEffectiveState == Qt::WindowMinimized) { - needShow = true; - } - - // emulate the new window state - if (newEffectiveState == Qt::WindowMinimized) { - //### not ideal... - hide(); - needShow = false; - } else if (newEffectiveState == Qt::WindowFullScreen) { - d->topData()->savedFlags = windowFlags(); - setParent(0, Qt::FramelessWindowHint | (windowFlags() & Qt::WindowStaysOnTopHint)); - d->setFullScreenSize_helper(); - raise(); - needShow = true; - } else if (newEffectiveState == Qt::WindowMaximized) { - createWinId(); - d->setMaxWindowState_helper(); - } else if (newEffectiveState == Qt::WindowNoState) { - // reset old geometry - QRect r = d->topData()->normalGeometry; - if (r.width() >= 0) { - d->topData()->normalGeometry = QRect(0,0,-1,-1); - setGeometry(r); - } - } - - // setWindowState() is not an explicit move/resize, same as the supported == true - // case - setAttribute(Qt::WA_Resized, wasResized); - setAttribute(Qt::WA_Moved, wasMoved); - } } data->in_set_window_state = 0; - if (needShow) - setVisible(true); - if (newstate & Qt::WindowActive) activateWindow(); |