mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-23 05:06:00 +01:00
clean up unconstraining logic
This commit is contained in:
parent
9255a4d2ff
commit
8e5985d70e
4 changed files with 31 additions and 7 deletions
|
@ -467,7 +467,7 @@ void CKeybindManager::changeworkspace(std::string args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove constraints
|
// remove constraints
|
||||||
g_pCompositor->m_sSeat.mouse->constraintActive = false;
|
g_pInputManager->unconstrainMouse();
|
||||||
|
|
||||||
// if it exists, we warp to it
|
// if it exists, we warp to it
|
||||||
if (g_pCompositor->getWorkspaceByID(workspaceToChangeTo)) {
|
if (g_pCompositor->getWorkspaceByID(workspaceToChangeTo)) {
|
||||||
|
@ -745,7 +745,7 @@ void CKeybindManager::moveFocusTo(std::string args) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// remove constraints
|
// remove constraints
|
||||||
g_pCompositor->m_sSeat.mouse->constraintActive = false;
|
g_pInputManager->unconstrainMouse();
|
||||||
|
|
||||||
auto switchToWindow = [&](CWindow* PWINDOWTOCHANGETO) {
|
auto switchToWindow = [&](CWindow* PWINDOWTOCHANGETO) {
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
|
||||||
const auto CONSTRAINTWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
|
const auto CONSTRAINTWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
|
||||||
|
|
||||||
if (!CONSTRAINTWINDOW) {
|
if (!CONSTRAINTWINDOW) {
|
||||||
g_pCompositor->m_sSeat.mouse->currentConstraint = nullptr;
|
unconstrainMouse();
|
||||||
} else {
|
} else {
|
||||||
// Native Wayland apps know how 2 constrain themselves.
|
// Native Wayland apps know how 2 constrain themselves.
|
||||||
// XWayland, we just have to accept them. Might cause issues, but thats XWayland for ya.
|
// XWayland, we just have to accept them. Might cause issues, but thats XWayland for ya.
|
||||||
|
@ -315,7 +315,7 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
|
||||||
m_ecbClickBehavior = CLICKMODE_KILL;
|
m_ecbClickBehavior = CLICKMODE_KILL;
|
||||||
|
|
||||||
// remove constraints
|
// remove constraints
|
||||||
g_pCompositor->m_sSeat.mouse->constraintActive = false;
|
g_pInputManager->unconstrainMouse();
|
||||||
refocus();
|
refocus();
|
||||||
|
|
||||||
// set cursor
|
// set cursor
|
||||||
|
@ -690,7 +690,7 @@ void CInputManager::destroyMouse(wlr_input_device* mouse) {
|
||||||
g_pCompositor->m_sSeat.mouse = m_lMice.size() > 0 ? &m_lMice.front() : nullptr;
|
g_pCompositor->m_sSeat.mouse = m_lMice.size() > 0 ? &m_lMice.front() : nullptr;
|
||||||
|
|
||||||
if (g_pCompositor->m_sSeat.mouse)
|
if (g_pCompositor->m_sSeat.mouse)
|
||||||
g_pCompositor->m_sSeat.mouse->currentConstraint = nullptr;
|
unconstrainMouse();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputManager::onKeyboardKey(wlr_keyboard_key_event* e, SKeyboard* pKeyboard) {
|
void CInputManager::onKeyboardKey(wlr_keyboard_key_event* e, SKeyboard* pKeyboard) {
|
||||||
|
@ -817,6 +817,29 @@ void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* co
|
||||||
Debug::log(LOG, "Constrained mouse to %x", pMouse->currentConstraint);
|
Debug::log(LOG, "Constrained mouse to %x", pMouse->currentConstraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CInputManager::unconstrainMouse() {
|
||||||
|
if (!g_pCompositor->m_sSeat.mouse->currentConstraint)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const auto CONSTRAINTWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
|
||||||
|
|
||||||
|
if (CONSTRAINTWINDOW) {
|
||||||
|
if (CONSTRAINTWINDOW->m_bIsX11) {
|
||||||
|
wlr_xwayland_surface_activate(CONSTRAINTWINDOW->m_uSurface.xwayland, false);
|
||||||
|
} else {
|
||||||
|
wlr_xdg_toplevel_set_activated(CONSTRAINTWINDOW->m_uSurface.xdg->toplevel, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wlr_pointer_constraint_v1_send_deactivated(g_pCompositor->m_sSeat.mouse->currentConstraint);
|
||||||
|
g_pCompositor->m_sSeat.mouse->constraintActive = false;
|
||||||
|
|
||||||
|
// TODO: its better to somehow detect the workspace...
|
||||||
|
g_pCompositor->m_sSeat.mouse->currentConstraint = nullptr;
|
||||||
|
|
||||||
|
g_pCompositor->m_sSeat.mouse->hyprListener_commitConstraint.removeCallback();
|
||||||
|
}
|
||||||
|
|
||||||
void Events::listener_commitConstraint(void* owner, void* data) {
|
void Events::listener_commitConstraint(void* owner, void* data) {
|
||||||
//g_pInputManager->recheckConstraint((SMouse*)owner);
|
//g_pInputManager->recheckConstraint((SMouse*)owner);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
|
|
||||||
void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
|
void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
|
||||||
void recheckConstraint(SMouse*);
|
void recheckConstraint(SMouse*);
|
||||||
|
void unconstrainMouse();
|
||||||
|
|
||||||
Vector2D getMouseCoordsInternal();
|
Vector2D getMouseCoordsInternal();
|
||||||
void refocus();
|
void refocus();
|
||||||
|
|
|
@ -79,7 +79,7 @@ void CInputManager::onSwipeEnd(wlr_pointer_swipe_end_event* e) {
|
||||||
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset = Vector2D(m_sActiveSwipe.pMonitor->vecSize.x, 0);
|
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset = Vector2D(m_sActiveSwipe.pMonitor->vecSize.x, 0);
|
||||||
m_sActiveSwipe.pWorkspaceBegin->m_fAlpha.setValueAndWarp(255.f);
|
m_sActiveSwipe.pWorkspaceBegin->m_fAlpha.setValueAndWarp(255.f);
|
||||||
|
|
||||||
g_pCompositor->m_sSeat.mouse->currentConstraint = nullptr;
|
g_pInputManager->unconstrainMouse();
|
||||||
|
|
||||||
Debug::log(LOG, "Ended swipe to the left");
|
Debug::log(LOG, "Ended swipe to the left");
|
||||||
} else {
|
} else {
|
||||||
|
@ -95,7 +95,7 @@ void CInputManager::onSwipeEnd(wlr_pointer_swipe_end_event* e) {
|
||||||
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset = Vector2D(-m_sActiveSwipe.pMonitor->vecSize.x, 0);
|
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset = Vector2D(-m_sActiveSwipe.pMonitor->vecSize.x, 0);
|
||||||
m_sActiveSwipe.pWorkspaceBegin->m_fAlpha.setValueAndWarp(255.f);
|
m_sActiveSwipe.pWorkspaceBegin->m_fAlpha.setValueAndWarp(255.f);
|
||||||
|
|
||||||
g_pCompositor->m_sSeat.mouse->currentConstraint = nullptr;
|
g_pInputManager->unconstrainMouse();
|
||||||
|
|
||||||
Debug::log(LOG, "Ended swipe to the right");
|
Debug::log(LOG, "Ended swipe to the right");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue