From ff39f02c38f738168644fc38a7ad526bf16c2ab7 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Thu, 4 Nov 2004 12:13:25 +0000 Subject: [PATCH] add an option to resize with 4 corners as it was long ago and make the default 9 "corners" with the middle corner being move. that way you only need one mod+button to move and resize windows --- data/rc.xml.in | 1 + data/rc.xsd | 3 +++ openbox/action.c | 51 +++++++++++++++++++++++++++++++----------------- openbox/config.c | 4 ++++ openbox/config.h | 3 +++ 5 files changed, 44 insertions(+), 18 deletions(-) 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; -- 2.44.0