Пример #1
0
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);
    }
}
Пример #2
0
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);
}
Пример #3
0
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();
}
Пример #5
0
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");
        }
    }
}