diff --git a/data/rc.xml.in b/data/rc.xml.in
index b07a8cdc..62ded70c 100644
--- a/data/rc.xml.in
+++ b/data/rc.xml.in
@@ -44,6 +44,7 @@
yes
+ no
diff --git a/data/rc.xsd b/data/rc.xsd
index b5b40f2d..521fe0c2 100644
--- a/data/rc.xsd
+++ b/data/rc.xsd
@@ -31,6 +31,8 @@
Sun Oct 31 10:08:34 UTC 2004 - mikachu(a)openbox.org
we haven't remembered to update this changelog in a while,
adding desktopMenuIcons.
+ Thu Nov 4 12:07:08 UTC 2004 - mikachu(a)openbox.org
+ Add fourCorners to resize context.
-->
+
diff --git a/openbox/action.c b/openbox/action.c
index bd8ae9e4..a6323d6f 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -1344,25 +1344,40 @@ void action_toggle_decorations(union ActionData *data)
static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
{
- if ((cw / 3 < 1) || (x - cx > cw / 3 * 2)) {
- if ((ch / 3 < 1) || (y - cy > ch / 3 * 2))
- return prop_atoms.net_wm_moveresize_size_bottomright;
- else if (y - cy < ch / 3)
- return prop_atoms.net_wm_moveresize_size_topright;
- else
- return prop_atoms.net_wm_moveresize_size_right;
- } else if (x - cx < cw / 3) {
- if (y - cy > ch / 3 * 2)
- return prop_atoms.net_wm_moveresize_size_bottomleft;
- else if (y - cy < ch / 3)
- return prop_atoms.net_wm_moveresize_size_topleft;
- else
- return prop_atoms.net_wm_moveresize_size_left;
+ if (config_resize_four_corners) {
+ if (x - cx > cw / 2) {
+ if (y - cy > ch / 2)
+ 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 {
- if (y - cy > ch / 2)
- return prop_atoms.net_wm_moveresize_size_bottom;
- else
- return prop_atoms.net_wm_moveresize_size_top;
+ if (x - cx > cw * 2 / 3) {
+ if (y - cy > ch * 2 / 3)
+ return prop_atoms.net_wm_moveresize_size_bottomright;
+ else if (y - cy < ch / 3)
+ return prop_atoms.net_wm_moveresize_size_topright;
+ else
+ return prop_atoms.net_wm_moveresize_size_right;
+ } else if (x - cx < cw / 3) {
+ if (y - cy > ch * 2 / 3)
+ return prop_atoms.net_wm_moveresize_size_bottomleft;
+ else if (y - cy < ch / 3)
+ return prop_atoms.net_wm_moveresize_size_topleft;
+ else
+ return prop_atoms.net_wm_moveresize_size_left;
+ } else
+ if (y - cy > ch * 2 / 3)
+ return prop_atoms.net_wm_moveresize_size_bottom;
+ else if (y - cy < ch / 3)
+ return prop_atoms.net_wm_moveresize_size_top;
+ else
+ return prop_atoms.net_wm_moveresize_move;
}
}
diff --git a/openbox/config.c b/openbox/config.c
index 4dac22d8..cc44e129 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -43,6 +43,7 @@ GSList *config_desktops_names;
gint config_screen_firstdesk;
gboolean config_resize_redraw;
+gboolean config_resize_four_corners;
gint config_resize_popup_show;
gint config_resize_popup_pos;
@@ -300,6 +301,8 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
if ((n = parse_find_node("drawContents", node)))
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))) {
config_resize_popup_show = parse_int(doc, n);
if (parse_contains("Always", doc, n))
@@ -559,6 +562,7 @@ void config_startup(ObParseInst *i)
parse_register(i, "desktops", parse_desktops, NULL);
config_resize_redraw = TRUE;
+ config_resize_four_corners = FALSE;
config_resize_popup_show = 1; /* nonpixel increments */
config_resize_popup_pos = 0; /* center of client */
diff --git a/openbox/config.h b/openbox/config.h
index 13255108..d7fc51f7 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -45,6 +45,9 @@ extern ObPlacePolicy config_place_policy;
/*! When true windows' contents are refreshed while they are resized; otherwise
they are not updated until the resize is complete */
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
resizing !1 increments */
extern gint config_resize_popup_show;