protocols: allow hyprland-toplevel-export to capture hidden windows (#9041)
This commit is contained in:
parent
4f0f512cab
commit
a6b263713a
3 changed files with 10 additions and 10 deletions
|
|
@ -87,7 +87,7 @@ CToplevelExportFrame::CToplevelExportFrame(SP<CHyprlandToplevelExportFrameV1> re
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pWindow->m_bIsMapped || pWindow->isHidden()) {
|
if (!pWindow->m_bIsMapped) {
|
||||||
LOGM(ERR, "Client requested sharing of window handle {:x} which is not shareable!", pWindow);
|
LOGM(ERR, "Client requested sharing of window handle {:x} which is not shareable!", pWindow);
|
||||||
resource->sendFailed();
|
resource->sendFailed();
|
||||||
PROTO::toplevelExport->destroyResource(this);
|
PROTO::toplevelExport->destroyResource(this);
|
||||||
|
|
@ -148,7 +148,7 @@ void CToplevelExportFrame::copy(CHyprlandToplevelExportFrameV1* pFrame, wl_resou
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pWindow->m_bIsMapped || pWindow->isHidden()) {
|
if (!pWindow->m_bIsMapped) {
|
||||||
LOGM(ERR, "Client requested sharing of window handle {:x} which is not shareable (2)!", pWindow);
|
LOGM(ERR, "Client requested sharing of window handle {:x} which is not shareable (2)!", pWindow);
|
||||||
resource->sendFailed();
|
resource->sendFailed();
|
||||||
PROTO::toplevelExport->destroyResource(this);
|
PROTO::toplevelExport->destroyResource(this);
|
||||||
|
|
|
||||||
|
|
@ -417,8 +417,8 @@ void CHyprRenderer::renderWorkspaceWindows(PHLMONITOR pMonitor, PHLWORKSPACE pWo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, timespec* time, bool decorate, eRenderPassMode mode, bool ignorePosition, bool ignoreAllGeometry) {
|
void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, timespec* time, bool decorate, eRenderPassMode mode, bool ignorePosition, bool standalone) {
|
||||||
if (pWindow->isHidden())
|
if (pWindow->isHidden() && !standalone)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (pWindow->m_bFadingOut) {
|
if (pWindow->m_bFadingOut) {
|
||||||
|
|
@ -450,7 +450,7 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, timespe
|
||||||
renderdata.pos.y = pMonitor->vecPosition.y;
|
renderdata.pos.y = pMonitor->vecPosition.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ignoreAllGeometry)
|
if (standalone)
|
||||||
decorate = false;
|
decorate = false;
|
||||||
|
|
||||||
// whether to use m_fMovingToWorkspaceAlpha, only if fading out into an invisible ws
|
// whether to use m_fMovingToWorkspaceAlpha, only if fading out into an invisible ws
|
||||||
|
|
@ -463,12 +463,12 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, timespe
|
||||||
(USE_WORKSPACE_FADE_ALPHA ? pWindow->m_fMovingToWorkspaceAlpha->value() : 1.F) * pWindow->m_fMovingFromWorkspaceAlpha->value();
|
(USE_WORKSPACE_FADE_ALPHA ? pWindow->m_fMovingToWorkspaceAlpha->value() : 1.F) * pWindow->m_fMovingFromWorkspaceAlpha->value();
|
||||||
renderdata.alpha = pWindow->m_fActiveInactiveAlpha->value();
|
renderdata.alpha = pWindow->m_fActiveInactiveAlpha->value();
|
||||||
renderdata.decorate = decorate && !pWindow->m_bX11DoesntWantBorders && !pWindow->isEffectiveInternalFSMode(FSMODE_FULLSCREEN);
|
renderdata.decorate = decorate && !pWindow->m_bX11DoesntWantBorders && !pWindow->isEffectiveInternalFSMode(FSMODE_FULLSCREEN);
|
||||||
renderdata.rounding = ignoreAllGeometry || renderdata.dontRound ? 0 : pWindow->rounding() * pMonitor->scale;
|
renderdata.rounding = standalone || renderdata.dontRound ? 0 : pWindow->rounding() * pMonitor->scale;
|
||||||
renderdata.roundingPower = ignoreAllGeometry || renderdata.dontRound ? 2.0f : pWindow->roundingPower();
|
renderdata.roundingPower = standalone || renderdata.dontRound ? 2.0f : pWindow->roundingPower();
|
||||||
renderdata.blur = !ignoreAllGeometry && *PBLUR && !DONT_BLUR;
|
renderdata.blur = !standalone && *PBLUR && !DONT_BLUR;
|
||||||
renderdata.pWindow = pWindow;
|
renderdata.pWindow = pWindow;
|
||||||
|
|
||||||
if (ignoreAllGeometry) {
|
if (standalone) {
|
||||||
renderdata.alpha = 1.f;
|
renderdata.alpha = 1.f;
|
||||||
renderdata.fadeAlpha = 1.f;
|
renderdata.fadeAlpha = 1.f;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ class CHyprRenderer {
|
||||||
void arrangeLayerArray(PHLMONITOR, const std::vector<PHLLSREF>&, bool, CBox*);
|
void arrangeLayerArray(PHLMONITOR, const std::vector<PHLLSREF>&, bool, CBox*);
|
||||||
void renderWorkspaceWindowsFullscreen(PHLMONITOR, PHLWORKSPACE, timespec*); // renders workspace windows (fullscreen) (tiled, floating, pinned, but no special)
|
void renderWorkspaceWindowsFullscreen(PHLMONITOR, PHLWORKSPACE, timespec*); // renders workspace windows (fullscreen) (tiled, floating, pinned, but no special)
|
||||||
void renderWorkspaceWindows(PHLMONITOR, PHLWORKSPACE, timespec*); // renders workspace windows (no fullscreen) (tiled, floating, pinned, but no special)
|
void renderWorkspaceWindows(PHLMONITOR, PHLWORKSPACE, timespec*); // renders workspace windows (no fullscreen) (tiled, floating, pinned, but no special)
|
||||||
void renderWindow(PHLWINDOW, PHLMONITOR, timespec*, bool, eRenderPassMode, bool ignorePosition = false, bool ignoreAllGeometry = false);
|
void renderWindow(PHLWINDOW, PHLMONITOR, timespec*, bool, eRenderPassMode, bool ignorePosition = false, bool standalone = false);
|
||||||
void renderLayer(PHLLS, PHLMONITOR, timespec*, bool popups = false);
|
void renderLayer(PHLLS, PHLMONITOR, timespec*, bool popups = false);
|
||||||
void renderSessionLockSurface(SSessionLockSurface*, PHLMONITOR, timespec*);
|
void renderSessionLockSurface(SSessionLockSurface*, PHLMONITOR, timespec*);
|
||||||
void renderDragIcon(PHLMONITOR, timespec*);
|
void renderDragIcon(PHLMONITOR, timespec*);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue