Add bringWindowToTop function to IHyprLayout (#2747)

* Add bringWindowToTop function to IHyprLayout

* Rename `bringWindowToTop` to `requestFocusForWindow`

* Fix doc
This commit is contained in:
outfoxxed 2023-07-19 03:39:45 -07:00 committed by GitHub
parent b8a7b09092
commit 5cd5631fb2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 10 deletions

View file

@ -234,16 +234,7 @@ void CWindow::createToplevelHandle() {
// handle events
hyprListener_toplevelActivate.initCallback(
&m_phForeignToplevel->events.request_activate,
[&](void* owner, void* data) {
if (isHidden() && m_sGroupData.pNextWindow) {
// grouped, change the current to us
setGroupCurrent(this);
}
g_pCompositor->focusWindow(this);
},
this, "Toplevel");
&m_phForeignToplevel->events.request_activate, [&](void* owner, void* data) { g_pLayoutManager->getCurrentLayout()->requestFocusForWindow(this); }, this, "Toplevel");
hyprListener_toplevelFullscreen.initCallback(
&m_phForeignToplevel->events.request_fullscreen,

View file

@ -519,4 +519,13 @@ CWindow* IHyprLayout::getNextWindowCandidate(CWindow* pWindow) {
return PWINDOWCANDIDATE;
}
void IHyprLayout::requestFocusForWindow(CWindow* pWindow) {
if (pWindow->isHidden() && pWindow->m_sGroupData.pNextWindow) {
// grouped, change the current to this window
pWindow->setGroupCurrent(pWindow);
}
g_pCompositor->focusWindow(pWindow);
}
IHyprLayout::~IHyprLayout() {}

View file

@ -148,6 +148,13 @@ interface IHyprLayout {
*/
virtual void replaceWindowDataWith(CWindow* from, CWindow* to) = 0;
/*
Called via the foreign toplevel activation protocol.
Focuses a window, bringing it to the top of its group if applicable.
May be ignored.
*/
virtual void requestFocusForWindow(CWindow*);
private:
Vector2D m_vBeginDragXY;
Vector2D m_vLastDragXY;