aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitemgrabresult.cpp
diff options
context:
space:
mode:
authorKai Uwe Broulik <kde@privat.broulik.de>2020-04-23 08:53:38 +0200
committerKai Uwe Broulik <kde@privat.broulik.de>2020-04-23 15:13:10 +0200
commit7c9a54907f44b7e30ceac1975edcfa7920ffafd8 (patch)
tree783b93814d76524201a0ce87976006c10c2ef78b /src/quick/items/qquickitemgrabresult.cpp
parent65f57369cf847da4e5a6924f7ad348466da070df (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>
Diffstat (limited to 'src/quick/items/qquickitemgrabresult.cpp')
-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 00e84536e9..41e9b2fe90 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)
@@ -293,7 +294,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;
}