mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-06 07:01:57 -07:00
fix: improved focus behaviour on workspace switching for follow_mouse!=1 (#3041)
* fix: improved focus behaviour on workspace switching for follow_mouse!=1 When the 'input:follow_mouse' is not set to 1 and the target workspace for switching does not currently have the previously focused window, Hyprland will prioritize focusing on the top-left-most window. * fix: #2451 call simulateMouseMovement. * unify logic * multimon fix --------- Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
This commit is contained in:
@@ -1198,6 +1198,26 @@ CWindow* CCompositor::getFirstWindowOnWorkspace(const int& id) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CWindow* CCompositor::getTopLeftWindowOnWorkspace(const int& id) {
|
||||
const auto PWORKSPACE = getWorkspaceByID(id);
|
||||
|
||||
if (!PWORKSPACE)
|
||||
return nullptr;
|
||||
|
||||
const auto PMONITOR = getMonitorFromID(PWORKSPACE->m_iMonitorID);
|
||||
|
||||
for (auto& w : m_vWindows) {
|
||||
if (w->m_iWorkspaceID != id || !w->m_bIsMapped || w->isHidden())
|
||||
continue;
|
||||
|
||||
const auto WINDOWIDEALBB = w->getWindowIdealBoundingBoxIgnoreReserved();
|
||||
|
||||
if (WINDOWIDEALBB.x <= PMONITOR->vecPosition.x + 1 && WINDOWIDEALBB.y <= PMONITOR->vecPosition.y + 1)
|
||||
return w.get();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CCompositor::doesSeatAcceptInput(wlr_surface* surface) {
|
||||
if (g_pSessionLockManager->isSessionLocked()) {
|
||||
if (g_pSessionLockManager->isSurfaceSessionLock(surface))
|
||||
|
Reference in New Issue
Block a user