refactor: use upstream Widget::IsVisibleOnAllWorkspaces() (#45887)

* refactor: use upstream Widget::IsVisibleOnAllWorkspaces()

* chore: add to breaking changes
This commit is contained in:
Shelley Vohr 2025-03-21 05:43:47 +01:00 committed by GitHub
parent 1b5db9989e
commit 32141eacfb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 14 deletions

View file

@ -12,6 +12,13 @@ This document uses the following convention to categorize breaking changes:
* **Deprecated:** An API was marked as deprecated. The API will continue to function, but will emit a deprecation warning, and will be removed in a future release.
* **Removed:** An API or feature was removed, and is no longer supported by Electron.
## Planned Breaking API Changes (37.0)
### Behavior Changed: `BrowserWindow.IsVisibleOnAllWorkspaces()` on Linux
`BrowserWindow.IsVisibleOnAllWorkspaces()` will now return false on Linux if the
window is not currently visible.
## Planned Breaking API Changes (36.0)
### Utility Process unhandled rejection behavior change

View file

@ -1527,20 +1527,8 @@ void NativeWindowViews::SetVisibleOnAllWorkspaces(
}
bool NativeWindowViews::IsVisibleOnAllWorkspaces() const {
#if BUILDFLAG(IS_LINUX)
if (IsX11()) {
// Use the presence/absence of _NET_WM_STATE_STICKY in _NET_WM_STATE to
// determine whether the current window is visible on all workspaces.
x11::Atom sticky_atom = x11::GetAtom("_NET_WM_STATE_STICKY");
std::vector<x11::Atom> wm_states;
auto* connection = x11::Connection::Get();
connection->GetArrayProperty(
static_cast<x11::Window>(GetAcceleratedWidget()),
x11::GetAtom("_NET_WM_STATE"), &wm_states);
return base::Contains(wm_states, sticky_atom);
}
#endif
return false;
// On Windows this always returns false.
return widget()->IsVisibleOnAllWorkspaces();
}
content::DesktopMediaID NativeWindowViews::GetDesktopMediaID() const {