Compare commits

...

4 Commits

Author SHA1 Message Date
はれなよ e85750ed5a
Merge b848238565 into 9c5dd59d4b 2024-06-29 00:46:06 +00:00
はれなよ b848238565
Merge branch 'hyprwm:main' into fix-6279 2024-06-29 09:46:03 +09:00
Harenayo 2d7a0ab21f Fix #6279: prevent sending keymap or repeat info events by keyboards without keyboard capability 2024-06-28 18:15:20 +09:00
Alexander b7f42a1e88
keybinds: fix move to prev ws, moved to same mon (#6688)
Co-authored-by: Крылов Александр <aleksandr.krylov@hyperus.team>
2024-06-28 00:20:50 +02:00
2 changed files with 22 additions and 7 deletions

View File

@ -1048,14 +1048,20 @@ SWorkspaceIDName getWorkspaceToChangeFromArgs(std::string args, PHLWORKSPACE PCU
return {WORKSPACE_NOT_CHANGED, ""};
}
const auto ID = PCURRENTWORKSPACE->m_iID;
if (const auto PWORKSPACETOCHANGETO = g_pCompositor->getWorkspaceByID(PPREVWS.id); PWORKSPACETOCHANGETO) {
if (PER_MON && PCURRENTWORKSPACE->m_iMonitorID != PWORKSPACETOCHANGETO->m_iMonitorID)
return {WORKSPACE_NOT_CHANGED, ""};
return {ID, PWORKSPACETOCHANGETO->m_szName};
}
const auto ID = PCURRENTWORKSPACE->m_iID;
const auto PWORKSPACETOCHANGETO = g_pCompositor->getWorkspaceByID(PPREVWS.id);
if (!PWORKSPACETOCHANGETO)
return {ID, PPREVWS.name.empty() ? std::to_string(PPREVWS.id) : PPREVWS.name};
return {ID, PPREVWS.name.empty() ? std::to_string(PPREVWS.id) : PPREVWS.name};
if (!PER_MON || PCURRENTWORKSPACE->m_iMonitorID == PWORKSPACETOCHANGETO->m_iMonitorID)
return {ID, PWORKSPACETOCHANGETO->m_szName};
// PER_MON and cur ws is not on same monitor with prev per monitor
const auto POTHERWSTOCHANGETO = g_pCompositor->getWorkspaceByID(PCURRENTWORKSPACE->getPrevWorkspaceIDName(false).id);
if (POTHERWSTOCHANGETO && POTHERWSTOCHANGETO->m_iMonitorID == PCURRENTWORKSPACE->m_iMonitorID)
return {ID, POTHERWSTOCHANGETO->m_szName};
return {WORKSPACE_NOT_CHANGED, ""};
}
void CKeybindManager::changeworkspace(std::string args) {

View File

@ -2,6 +2,7 @@
#include "Compositor.hpp"
#include "DataDevice.hpp"
#include "../../devices/IKeyboard.hpp"
#include "../../devices/IHID.hpp"
#include "../../managers/SeatManager.hpp"
#include "../../config/ConfigValue.hpp"
#include <algorithm>
@ -451,12 +452,20 @@ void CWLSeatProtocol::updateCapabilities(uint32_t caps) {
}
void CWLSeatProtocol::updateKeymap() {
if (!(currentCaps & eHIDCapabilityType::HID_INPUT_CAPABILITY_KEYBOARD)) {
return;
}
for (auto& k : m_vKeyboards) {
k->sendKeymap(g_pSeatManager->keyboard.lock());
}
}
void CWLSeatProtocol::updateRepeatInfo(uint32_t rate, uint32_t delayMs) {
if (!(currentCaps & eHIDCapabilityType::HID_INPUT_CAPABILITY_KEYBOARD)) {
return;
}
for (auto& k : m_vKeyboards) {
k->repeatInfo(rate, delayMs);
}