remove the four corners option
document what these serious macros are with art!
This commit is contained in:
parent
59a33c03b0
commit
9e6aa531d0
3 changed files with 66 additions and 41 deletions
102
openbox/action.c
102
openbox/action.c
|
@ -1566,22 +1566,10 @@ void action_toggle_decorations(union ActionData *data)
|
||||||
|
|
||||||
static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
|
static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
|
||||||
{
|
{
|
||||||
if (config_resize_four_corners) {
|
/* let's make x and y client relative instead of screen relative */
|
||||||
if (x - cx > cw / 2) {
|
x = x - cx;
|
||||||
if (y - cy > ch / 2)
|
y = ch - (y - cy); /* y is inverted, 0 is at the bottom of the window */
|
||||||
return prop_atoms.net_wm_moveresize_size_bottomright;
|
|
||||||
else
|
|
||||||
return prop_atoms.net_wm_moveresize_size_topright;
|
|
||||||
} else {
|
|
||||||
if (y - cy > ch / 2)
|
|
||||||
return prop_atoms.net_wm_moveresize_size_bottomleft;
|
|
||||||
else
|
|
||||||
return prop_atoms.net_wm_moveresize_size_topleft;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* let's make x and y client relative instead of screen relative */
|
|
||||||
x = x - cx;
|
|
||||||
y = ch - y + cy;
|
|
||||||
#define X x*ch/cw
|
#define X x*ch/cw
|
||||||
#define A -4*X + 7*ch/3
|
#define A -4*X + 7*ch/3
|
||||||
#define B 4*X -15*ch/9
|
#define B 4*X -15*ch/9
|
||||||
|
@ -1596,26 +1584,67 @@ static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
|
||||||
#define c (x > 5*cw/9)
|
#define c (x > 5*cw/9)
|
||||||
#define d (y < 4*ch/9)
|
#define d (y < 4*ch/9)
|
||||||
|
|
||||||
if (y < A && y >= C)
|
/*
|
||||||
return prop_atoms.net_wm_moveresize_size_topleft;
|
Each of these defines (except X which is just there for fun), represents
|
||||||
else if (y >= A && y >= B && a)
|
the equation of a line. The lines they represent are shown in the diagram
|
||||||
return prop_atoms.net_wm_moveresize_size_top;
|
below. Checking y against these lines, we are able to choose a region
|
||||||
else if (y < B && y >= D)
|
of the window as shown.
|
||||||
return prop_atoms.net_wm_moveresize_size_topright;
|
|
||||||
else if (y < C && y >= E && b)
|
+---------------------A-------|-------|-------B---------------------+
|
||||||
return prop_atoms.net_wm_moveresize_size_left;
|
| |A B| |
|
||||||
else if (y < D && y >= F && c)
|
| |A | | B| |
|
||||||
return prop_atoms.net_wm_moveresize_size_right;
|
| | A B | |
|
||||||
else if (y < E && y >= G)
|
| | A | | B | |
|
||||||
return prop_atoms.net_wm_moveresize_size_bottomleft;
|
| | A B | |
|
||||||
else if (y < G && y < H && d)
|
| | A | | B | |
|
||||||
return prop_atoms.net_wm_moveresize_size_bottom;
|
| northwest | A north B | northeast |
|
||||||
else if (y >= H && y < F)
|
| | A | | B | |
|
||||||
return prop_atoms.net_wm_moveresize_size_bottomright;
|
| | A B | |
|
||||||
else
|
C---------------------+----A--+-------+--B----+---------------------D
|
||||||
return prop_atoms.net_wm_moveresize_move;
|
|CCCCCCC | A B | DDDDDDD|
|
||||||
}
|
| CCCCCCCC | A | | B | DDDDDDDD |
|
||||||
}
|
| CCCCCCC A B DDDDDDD |
|
||||||
|
- - - - - - - - - - - +CCCCCCC+aaaaaaa+DDDDDDD+ - - - - - - - - - - -
|
||||||
|
| | b c | |
|
||||||
|
| west | b move c | east |
|
||||||
|
| | b c | |
|
||||||
|
- - - - - - - - - - - +EEEEEEE+ddddddd+FFFFFFF+- - - - - - - - - - -
|
||||||
|
| EEEEEEE G H FFFFFFF |
|
||||||
|
| EEEEEEEE | G | | H | FFFFFFFF |
|
||||||
|
|EEEEEEE | G H | FFFFFFF|
|
||||||
|
E---------------------+----G--+-------+--H----+---------------------F
|
||||||
|
| | G H | |
|
||||||
|
| | G | | H | |
|
||||||
|
| southwest | G south H | southeast |
|
||||||
|
| | G | | H | |
|
||||||
|
| | G H | |
|
||||||
|
| | G | | H | |
|
||||||
|
| | G H | |
|
||||||
|
| |G | | H| |
|
||||||
|
| |G H| |
|
||||||
|
+---------------------G-------|-------|-------H---------------------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (y < A && y >= C)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_topleft;
|
||||||
|
else if (y >= A && y >= B && a)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_top;
|
||||||
|
else if (y < B && y >= D)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_topright;
|
||||||
|
else if (y < C && y >= E && b)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_left;
|
||||||
|
else if (y < D && y >= F && c)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_right;
|
||||||
|
else if (y < E && y >= G)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_bottomleft;
|
||||||
|
else if (y < G && y < H && d)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_bottom;
|
||||||
|
else if (y >= H && y < F)
|
||||||
|
return prop_atoms.net_wm_moveresize_size_bottomright;
|
||||||
|
else
|
||||||
|
return prop_atoms.net_wm_moveresize_move;
|
||||||
|
|
||||||
|
#undef X
|
||||||
#undef A
|
#undef A
|
||||||
#undef B
|
#undef B
|
||||||
#undef C
|
#undef C
|
||||||
|
@ -1628,6 +1657,7 @@ static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
|
||||||
#undef b
|
#undef b
|
||||||
#undef c
|
#undef c
|
||||||
#undef d
|
#undef d
|
||||||
|
}
|
||||||
|
|
||||||
void action_moveresize(union ActionData *data)
|
void action_moveresize(union ActionData *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -535,8 +535,6 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
|
||||||
|
|
||||||
if ((n = parse_find_node("drawContents", node)))
|
if ((n = parse_find_node("drawContents", node)))
|
||||||
config_resize_redraw = parse_bool(doc, n);
|
config_resize_redraw = parse_bool(doc, n);
|
||||||
if ((n = parse_find_node("fourCorner", node)))
|
|
||||||
config_resize_four_corners = parse_bool(doc, n);
|
|
||||||
if ((n = parse_find_node("popupShow", node))) {
|
if ((n = parse_find_node("popupShow", node))) {
|
||||||
config_resize_popup_show = parse_int(doc, n);
|
config_resize_popup_show = parse_int(doc, n);
|
||||||
if (parse_contains("Always", doc, n))
|
if (parse_contains("Always", doc, n))
|
||||||
|
|
|
@ -46,9 +46,6 @@ extern ObPlacePolicy config_place_policy;
|
||||||
/*! When true windows' contents are refreshed while they are resized; otherwise
|
/*! When true windows' contents are refreshed while they are resized; otherwise
|
||||||
they are not updated until the resize is complete */
|
they are not updated until the resize is complete */
|
||||||
extern gboolean config_resize_redraw;
|
extern gboolean config_resize_redraw;
|
||||||
/*! Divide windows in 4 or 9 areas when doing a resize. The middle will be move
|
|
||||||
when selecting 9 corners */
|
|
||||||
extern gboolean config_resize_four_corners;
|
|
||||||
/*! show move/resize popups? 0 = no, 1 = always, 2 = only
|
/*! show move/resize popups? 0 = no, 1 = always, 2 = only
|
||||||
resizing !1 increments */
|
resizing !1 increments */
|
||||||
extern gint config_resize_popup_show;
|
extern gint config_resize_popup_show;
|
||||||
|
|
Loading…
Reference in a new issue