void UpdateBorder(std::string BorderType) { Assert(BorderType == "focused" || BorderType == "marked", "UpdateBorder()") kwm_border *Border = &FocusedBorder; int WindowID = GetFocusedWindowID(); if(BorderType == "focused" && FocusedBorder.Enabled && PrefixBorder.Enabled && KWMHotkeys.Prefix.Active) { Border = &PrefixBorder; Border->Handle = FocusedBorder.Handle; } else if(BorderType == "marked") { WindowID = KWMScreen.MarkedWindow; Border = &MarkedBorder; } OpenBorder(Border); if(!Border->Enabled) CloseBorder(Border); if(Border->Enabled) { if(WindowID == -1) ClearBorder(Border); else RefreshBorder(Border, WindowID); } }
bool KwmMainHotkeyTrigger(CGEventRef *Event) { modifiers Mod = {}; CGEventFlags Flags = CGEventGetFlags(*Event); Mod.CmdKey = (Flags & kCGEventFlagMaskCommand) == kCGEventFlagMaskCommand; Mod.AltKey = (Flags & kCGEventFlagMaskAlternate) == kCGEventFlagMaskAlternate; Mod.CtrlKey = (Flags & kCGEventFlagMaskControl) == kCGEventFlagMaskControl; Mod.ShiftKey = (Flags & kCGEventFlagMaskShift) == kCGEventFlagMaskShift; CGKeyCode Keycode = (CGKeyCode)CGEventGetIntegerValueField(*Event, kCGKeyboardEventKeycode); if(KWMHotkeys.Prefix.Enabled && KwmIsPrefixKey(&KWMHotkeys.Prefix.Key, &Mod, Keycode)) { KWMHotkeys.Prefix.Active = true; KWMHotkeys.Prefix.Time = std::chrono::steady_clock::now(); if(PrefixBorder.Enabled) { ClearBorder(&FocusedBorder); UpdateBorder("focused"); } return true; } return KwmExecuteHotkey(Mod, Keycode); }
void KwmSetPrefix(std::string KeySym) { hotkey Hotkey = {}; if(KwmParseHotkey(KeySym, "", &Hotkey)) { KWMHotkeys.Prefix.Key = Hotkey; KWMHotkeys.Prefix.Active = false; KWMHotkeys.Prefix.Enabled = true; ClearBorder(&PrefixBorder); } }
void ElementStyleCache::Clear() { ClearBorder(); ClearMargin(); ClearPadding(); ClearDimensions(); ClearOverflow(); ClearPosition(); ClearFloat(); ClearDisplay(); ClearWhitespace(); }
void CheckPrefixTimeout() { if(KWMHotkeys.Prefix.Active) { kwm_time_point NewPrefixTime = std::chrono::steady_clock::now(); std::chrono::duration<double> Diff = NewPrefixTime - KWMHotkeys.Prefix.Time; if(Diff.count() > KWMHotkeys.Prefix.Timeout) { KWMHotkeys.Prefix.Active = false; ClearBorder(&PrefixBorder); UpdateBorder("focused"); } } }