summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-11-21 14:43:40 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-21 16:28:36 +0100
commit773610cc451bb2b4319da6567b21510022d08014 (patch)
tree5f0120e5f1ead773011dcf851f8756bbab9a54b7
parent8259e45c1e87c66ac8c39f1ebaccd7d753fb55fb (diff)
Revert "Ensure Qt::WA_Mapped is set in case of obscured native windows."
Qt::WA_Mapped maps (sic) to windowHandle()->isExposed(), and we set/update it in QWidgetWindow::handleExposeEvent(). Setting it directly in show_sys shortcuts QPA and assumes showing a window is synchronous on all platforms, resulting in trying to flush the widget backingstore when the window was not exposed yet (due to discardSyncRequest starting to return false). This reverts commit 829b1d13b225e87b8a385397e2b53c7a9f8cda9e. Change-Id: I0bd700d4939bc69ba184d8586435b68ec3dd72fb Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp2
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp28
4 files changed, 1 insertions, 37 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index 3c4985591e..93234f3958 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -510,9 +510,9 @@ void QWidgetPrivate::show_sys()
QWindow *window = q->windowHandle();
- q->setAttribute(Qt::WA_Mapped);
if (q->testAttribute(Qt::WA_DontShowOnScreen)) {
invalidateBuffer(q->rect());
+ q->setAttribute(Qt::WA_Mapped);
if (q->isWindow() && q->windowModality() != Qt::NonModal && window) {
// add our window to the modal window list
QGuiApplicationPrivate::showModalWindow(window);
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index 22e15e23fe..e977ab3d6f 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -713,10 +713,6 @@ void QWidgetWindow::handleWindowStateChangedEvent(QWindowStateChangeEvent *event
break;
}
- // Note that widgetState == m_widget->data->window_state when triggered by QWidget::setWindowState().
- if (!(widgetState & Qt::WindowMinimized))
- m_widget->setAttribute(Qt::WA_Mapped);
-
// Sent event if the state changed (that is, it is not triggered by
// QWidget::setWindowState(), which also sends an event to the widget).
if (widgetState != int(m_widget->data->window_state)) {
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 7bb5fd4614..03d6c1cdbd 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -7192,10 +7192,6 @@ void tst_QWidget::hideOpaqueChildWhileHidden()
#if !defined(Q_OS_WINCE)
void tst_QWidget::updateWhileMinimized()
{
-#ifdef Q_OS_UNIX
- if (qgetenv("XDG_CURRENT_DESKTOP").contains("Unity"))
- QSKIP("This test fails on Unity."); // Minimized windows are not unmapped for some reason.
-#endif // Q_OS_UNIX
UpdateWidget widget;
// Filter out activation change and focus events to avoid update() calls in QWidget.
widget.updateOnActivationChangeAndFocusIn = false;
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index f5585c583a..1bbbfd610e 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -91,8 +91,6 @@ private slots:
void tst_showWithoutActivating();
void tst_paintEventOnSecondShow();
- void obscuredNativeMapped();
-
#ifndef QT_NO_DRAGANDDROP
void tst_dnd();
#endif
@@ -370,32 +368,6 @@ void tst_QWidget_window::tst_paintEventOnSecondShow()
QTRY_VERIFY(w.paintEventReceived);
}
-// QTBUG-33520, a toplevel fully obscured by native children should still receive Qt::WA_Mapped
-void tst_QWidget_window::obscuredNativeMapped()
-{
- enum { size = 200 };
-
- QWidget topLevel;
- topLevel.setWindowFlags(Qt::FramelessWindowHint);
- QWidget *child = new QWidget(&topLevel);
- child->resize(size, size);
- topLevel.resize(size, size);
- topLevel.move(QGuiApplication::primaryScreen()->availableGeometry().center() - QPoint(size /2 , size / 2));
- child->winId();
- topLevel.show();
- QTRY_VERIFY(topLevel.testAttribute(Qt::WA_Mapped));
-#if defined(Q_OS_MAC)
- QSKIP("This test fails on Mac."); // Minimized windows are not unmapped for some reason.
-#elif defined(Q_OS_UNIX)
- if (qgetenv("XDG_CURRENT_DESKTOP").contains("Unity"))
- QSKIP("This test fails on Unity."); // Minimized windows are not unmapped for some reason.
-#endif // Q_OS_UNIX
- topLevel.setWindowState(Qt::WindowMinimized);
- QTRY_VERIFY(!topLevel.testAttribute(Qt::WA_Mapped));
- topLevel.setWindowState(Qt::WindowNoState);
- QTRY_VERIFY(topLevel.testAttribute(Qt::WA_Mapped));
-}
-
#ifndef QT_NO_DRAGANDDROP
/* DnD test for QWidgetWindow (handleDrag*Event() functions).