diff options
author | Kai Uwe Broulik <kde@privat.broulik.de> | 2020-04-23 08:53:38 +0200 |
---|---|---|
committer | Kai Uwe Broulik <kde@privat.broulik.de> | 2020-04-23 15:13:10 +0200 |
commit | 7c9a54907f44b7e30ceac1975edcfa7920ffafd8 (patch) | |
tree | 783b93814d76524201a0ce87976006c10c2ef78b /src/quick/items/qquickitemgrabresult.cpp | |
parent | 65f57369cf847da4e5a6924f7ad348466da070df (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.cpp | 7 |
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; } |