diff options
author | Kai Uwe Broulik <kde@privat.broulik.de> | 2020-04-23 08:53:38 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2020-06-02 11:54:35 +0000 |
commit | 0a9fb6ce3a0c04a01081f576776290cfa0cb8e29 (patch) | |
tree | 84e8e65d429a2d8e3b3e5545ec233f9e458c7a9e /src | |
parent | b4d4c4773d95b8b770b359594966162339c1bd7f (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)
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickitemgrabresult.cpp | 7 |
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; } |