mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 21:05:58 +01:00
input: leave special on focus (#4358)
This commit is contained in:
parent
7e033e48ac
commit
666ee61c13
1 changed files with 6 additions and 2 deletions
|
@ -928,12 +928,13 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
|
||||||
if (pWindow->m_bPinned)
|
if (pWindow->m_bPinned)
|
||||||
pWindow->m_iWorkspaceID = m_pLastMonitor->activeWorkspace;
|
pWindow->m_iWorkspaceID = m_pLastMonitor->activeWorkspace;
|
||||||
|
|
||||||
|
const auto PMONITOR = getMonitorFromID(pWindow->m_iMonitorID);
|
||||||
|
|
||||||
if (!isWorkspaceVisible(pWindow->m_iWorkspaceID)) {
|
if (!isWorkspaceVisible(pWindow->m_iWorkspaceID)) {
|
||||||
|
const auto PWORKSPACE = getWorkspaceByID(pWindow->m_iWorkspaceID);
|
||||||
// This is to fix incorrect feedback on the focus history.
|
// This is to fix incorrect feedback on the focus history.
|
||||||
const auto PWORKSPACE = getWorkspaceByID(pWindow->m_iWorkspaceID);
|
|
||||||
PWORKSPACE->m_pLastFocusedWindow = pWindow;
|
PWORKSPACE->m_pLastFocusedWindow = pWindow;
|
||||||
PWORKSPACE->rememberPrevWorkspace(getWorkspaceByID(m_pLastMonitor->activeWorkspace));
|
PWORKSPACE->rememberPrevWorkspace(getWorkspaceByID(m_pLastMonitor->activeWorkspace));
|
||||||
const auto PMONITOR = getMonitorFromID(PWORKSPACE->m_iMonitorID);
|
|
||||||
PMONITOR->changeWorkspace(PWORKSPACE, false, true);
|
PMONITOR->changeWorkspace(PWORKSPACE, false, true);
|
||||||
// changeworkspace already calls focusWindow
|
// changeworkspace already calls focusWindow
|
||||||
return;
|
return;
|
||||||
|
@ -942,6 +943,9 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
|
||||||
const auto PLASTWINDOW = m_pLastWindow;
|
const auto PLASTWINDOW = m_pLastWindow;
|
||||||
m_pLastWindow = pWindow;
|
m_pLastWindow = pWindow;
|
||||||
|
|
||||||
|
if (PMONITOR->specialWorkspaceID && PMONITOR->specialWorkspaceID != pWindow->m_iWorkspaceID)
|
||||||
|
PMONITOR->setSpecialWorkspace(nullptr);
|
||||||
|
|
||||||
// we need to make the PLASTWINDOW not equal to m_pLastWindow so that RENDERDATA is correct for an unfocused window
|
// we need to make the PLASTWINDOW not equal to m_pLastWindow so that RENDERDATA is correct for an unfocused window
|
||||||
if (windowValidMapped(PLASTWINDOW)) {
|
if (windowValidMapped(PLASTWINDOW)) {
|
||||||
PLASTWINDOW->updateDynamicRules();
|
PLASTWINDOW->updateDynamicRules();
|
||||||
|
|
Loading…
Reference in a new issue