From 3eb01800e8ce4416daf34853d6805b39ea90aa87 Mon Sep 17 00:00:00 2001 From: Renan Traba Date: Mon, 22 Apr 2013 20:28:11 -0300 Subject: [PATCH] added new windows positions new window positions top left, top right, bottom left and bottom right these new maximized positions are combinations of left, right, top and bottom maximized positions --- src/actions.c | 20 ++++++++++++++++---- src/defaults.c | 10 +++++++++- src/event.c | 28 ++++++++++++++++++++++++++++ src/keybind.h | 4 ++++ 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/actions.c b/src/actions.c index 8a4a0c19..19b43227 100644 --- a/src/actions.c +++ b/src/actions.c @@ -502,17 +502,29 @@ void handleMaximize(WWindow *wwin, int directions) effective = requested; else { if (requested & MAX_LEFTHALF) { - effective |= MAX_VERTICAL; + if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF))) + effective |= MAX_VERTICAL; + else + effective |= requested & (MAX_TOPHALF | MAX_BOTTOMHALF); effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); } else if (requested & MAX_RIGHTHALF) { - effective |= MAX_VERTICAL; + if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF))) + effective |= MAX_VERTICAL; + else + effective |= requested & (MAX_TOPHALF | MAX_BOTTOMHALF); effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); } if (requested & MAX_TOPHALF) { - effective |= MAX_HORIZONTAL; + if (!(requested & (MAX_LEFTHALF | MAX_RIGHTHALF))) + effective |= MAX_HORIZONTAL; + else + effective |= requested & (MAX_LEFTHALF | MAX_RIGHTHALF); effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF); } else if (requested & MAX_BOTTOMHALF) { - effective |= MAX_HORIZONTAL; + if (!(requested & (MAX_LEFTHALF | MAX_RIGHTHALF))) + effective |= MAX_HORIZONTAL; + else + effective |= requested & (MAX_LEFTHALF | MAX_RIGHTHALF); effective &= ~(MAX_VERTICAL | MAX_TOPHALF); } if (requested & MAX_HORIZONTAL) diff --git a/src/defaults.c b/src/defaults.c index 82202df7..25d7feec 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -609,8 +609,16 @@ WDefaultEntry optionList[] = { NULL, getKeybind, setKeyGrab, NULL, NULL}, {"BHMaximizeKey", "None", (void*)WKBD_BHMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, + {"LTCMaximizeKey", "None", (void*)WKBD_LTCMAXIMIZE, + NULL, getKeybind, setKeyGrab, NULL, NULL}, + {"RTCMaximizeKey", "None", (void*)WKBD_RTCMAXIMIZE, + NULL, getKeybind, setKeyGrab, NULL, NULL}, + {"LBCMaximizeKey", "None", (void*)WKBD_LBCMAXIMIZE, + NULL, getKeybind, setKeyGrab, NULL, NULL}, + {"RBCMaximizeKey", "None", (void*)WKBD_RBCMAXIMIZE, + NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MaximusKey", "None", (void*)WKBD_MAXIMUS, - NULL, getKeybind, setKeyGrab, NULL, NULL}, + NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RaiseKey", "\"Meta+Up\"", (void *)WKBD_RAISE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LowerKey", "\"Meta+Down\"", (void *)WKBD_LOWER, diff --git a/src/event.c b/src/event.c index f169e025..76649263 100644 --- a/src/event.c +++ b/src/event.c @@ -1484,6 +1484,34 @@ static void handleKeyPress(XEvent * event) handleMaximize(wwin, MAX_HORIZONTAL | MAX_BOTTOMHALF | MAX_KEYBOARD); } break; + case WKBD_LTCMAXIMIZE: + if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { + CloseWindowMenu(scr); + + handleMaximize(wwin, MAX_LEFTHALF | MAX_TOPHALF | MAX_KEYBOARD); + } + break; + case WKBD_RTCMAXIMIZE: + if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { + CloseWindowMenu(scr); + + handleMaximize(wwin, MAX_RIGHTHALF | MAX_TOPHALF | MAX_KEYBOARD); + } + break; + case WKBD_LBCMAXIMIZE: + if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { + CloseWindowMenu(scr); + + handleMaximize(wwin, MAX_LEFTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD); + } + break; + case WKBD_RBCMAXIMIZE: + if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { + CloseWindowMenu(scr); + + handleMaximize(wwin, MAX_RIGHTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD); + } + break; case WKBD_MAXIMUS: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); diff --git a/src/keybind.h b/src/keybind.h index 0209aed7..bf02965c 100644 --- a/src/keybind.h +++ b/src/keybind.h @@ -39,6 +39,10 @@ enum { WKBD_RHMAXIMIZE, WKBD_THMAXIMIZE, WKBD_BHMAXIMIZE, + WKBD_LTCMAXIMIZE, + WKBD_RTCMAXIMIZE, + WKBD_LBCMAXIMIZE, + WKBD_RBCMAXIMIZE, WKBD_MAXIMUS, WKBD_SELECT, WKBD_RAISE, -- 2.11.4.GIT