diff options
| author | Mikael Magnusson <mikachu@comhem.se> | 2004-11-04 12:13:25 +0000 |
|---|---|---|
| committer | Mikael Magnusson <mikachu@comhem.se> | 2004-11-04 12:13:25 +0000 |
| commit | ff39f02c38f738168644fc38a7ad526bf16c2ab7 (patch) | |
| tree | b21635bb179b00cacc926dff0c3aabf3171cb93b /openbox | |
| parent | ed4c6995ca199e5d015f1ca90654b4030c7ea760 (diff) | |
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
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/action.c | 51 | ||||
| -rw-r--r-- | openbox/config.c | 4 | ||||
| -rw-r--r-- | openbox/config.h | 3 |
3 files changed, 40 insertions, 18 deletions
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; |
