aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Uwe Broulik <kde@privat.broulik.de>2020-04-23 08:53:38 +0200
committerAndy Shaw <andy.shaw@qt.io>2020-06-02 11:54:35 +0000
commit0a9fb6ce3a0c04a01081f576776290cfa0cb8e29 (patch)
tree84e8e65d429a2d8e3b3e5545ec233f9e458c7a9e
parentb4d4c4773d95b8b770b359594966162339c1bd7f (diff)
qquickitemgrabresult: Check effective window for visibility
When using QQuickWidget, the quick scene is in an offscreen window which isn't visible, so grabToImage would always abort with "item's window is not visible". Checking the render window for the item fixes that. Task-number: QTBUG-55879 Change-Id: I58153e02e78623ba4ea6e7beec18a7503de7feeb Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 7c9a54907f44b7e30ceac1975edcfa7920ffafd8)
-rw-r--r--src/quick/items/qquickitemgrabresult.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/quick/items/qquickitemgrabresult.cpp b/src/quick/items/qquickitemgrabresult.cpp
index f298803c7f..9631eb7bf3 100644
--- a/src/quick/items/qquickitemgrabresult.cpp
+++ b/src/quick/items/qquickitemgrabresult.cpp
@@ -40,6 +40,7 @@
#include <private/qtquickglobal_p.h>
#include "qquickitemgrabresult.h"
+#include "qquickrendercontrol.h"
#include "qquickwindow.h"
#include "qquickitem.h"
#if QT_CONFIG(quick_shadereffect)
@@ -291,7 +292,11 @@ QQuickItemGrabResult *QQuickItemGrabResultPrivate::create(QQuickItem *item, cons
return nullptr;
}
- if (!item->window()->isVisible()) {
+ QWindow *effectiveWindow = item->window();
+ if (QWindow *renderWindow = QQuickRenderControl::renderWindowFor(item->window()))
+ effectiveWindow = renderWindow;
+
+ if (!effectiveWindow->isVisible()) {
qmlWarning(item) << "grabToImage: item's window is not visible";
return nullptr;
}