protocols: implement image-capture-source-v1 and image-copy-capture-v1 (#11709)

Implements the new screencopy protocols
This commit is contained in:
Ikalco 2026-02-22 06:30:11 -06:00 committed by GitHub
parent 93dbf88426
commit b4ee4674f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
37 changed files with 2585 additions and 1078 deletions

View file

@ -653,6 +653,18 @@ void CWindow::onMap() {
},
false);
m_realSize->setUpdateCallback([this](auto) {
if (m_isMapped)
m_events.resize.emit();
});
m_realPosition->setUpdateCallback([this](auto) {
if (m_isMapped && m_monitor != m_prevMonitor) {
m_prevMonitor = m_monitor;
m_events.monitorChanged.emit();
}
});
m_movingFromWorkspaceAlpha->setValueAndWarp(1.F);
m_reportedSize = m_pendingReportedSize;
@ -687,6 +699,9 @@ void CWindow::onBorderAngleAnimEnd(WP<CBaseAnimatedVariable> pav) {
void CWindow::setHidden(bool hidden) {
m_hidden = hidden;
if (hidden)
m_events.hide.emit();
if (hidden && Desktop::focusState()->window() == m_self)
Desktop::focusState()->window().reset();
@ -2119,6 +2134,7 @@ void CWindow::unmapWindow() {
m_originalClosedExtents = getFullWindowExtents();
}
m_events.unmap.emit();
g_pEventManager->postEvent(SHyprIPCEvent{"closewindow", std::format("{:x}", m_self.lock())});
EMIT_HOOK_EVENT("closeWindow", m_self.lock());

View file

@ -109,6 +109,10 @@ namespace Desktop::View {
struct {
CSignalT<> destroy;
CSignalT<> unmap;
CSignalT<> hide;
CSignalT<> resize;
CSignalT<> monitorChanged;
} m_events;
WP<CXDGSurfaceResource> m_xdgSurface;
@ -145,7 +149,7 @@ namespace Desktop::View {
std::string m_initialTitle = "";
std::string m_initialClass = "";
PHLWORKSPACE m_workspace;
PHLMONITORREF m_monitor;
PHLMONITORREF m_monitor, m_prevMonitor;
bool m_isMapped = false;