all repos — openbox @ 8cb6e95eb6afb7204052b07748ffe265700f5d2c

openbox fork - make it a bit more like ryudo

add moverelative and resizerelative
Mikael Magnusson mikachu@comhem.se
commit

8cb6e95eb6afb7204052b07748ffe265700f5d2c

parent

05c0dbfedf0c525137eaa05c26c5d10c584ec0d5

3 files changed, 64 insertions(+), 6 deletions(-)

jump to
M data/rc.xsddata/rc.xsd

@@ -151,6 +151,12 @@ <xs:sequence>

<xs:element minOccurs="0" name="execute" type="xs:string"/> <xs:element minOccurs="0" name="menu" type="xs:string"/> <xs:element minOccurs="0" name="delta" type="xs:integer"/> + <xs:element minOccurs="0" name="x" type="xs:integer"/> + <xs:element minOccurs="0" name="y" type="xs:integer"/> + <xs:element minOccurs="0" name="left" type="xs:integer"/> + <xs:element minOccurs="0" name="right" type="xs:integer"/> + <xs:element minOccurs="0" name="up" type="xs:integer"/> + <xs:element minOccurs="0" name="down" type="xs:integer"/> <xs:element minOccurs="0" name="desktop" type="xs:integer"/> <xs:element minOccurs="0" name="wrap" type="ob:bool"/> <xs:element minOccurs="0" name="follow" type="ob:bool"/>

@@ -272,6 +278,7 @@ <xs:enumeration value="MaximizeFull"/>

<xs:enumeration value="MaximizeHorz"/> <xs:enumeration value="MaximizeVert"/> <xs:enumeration value="Move"/> + <xs:enumeration value="MoveRelative"/> <xs:enumeration value="MoveRelativeHorz"/> <xs:enumeration value="MoveRelativeVert"/> <xs:enumeration value="MoveToCenter"/>

@@ -285,6 +292,7 @@ <xs:enumeration value="Raise"/>

<xs:enumeration value="RaiseLower"/> <xs:enumeration value="Reconfigure"/> <xs:enumeration value="Resize"/> + <xs:enumeration value="ResizeRelative"/> <xs:enumeration value="ResizeRelativeHorz"/> <xs:enumeration value="ResizeRelativeVert"/> <xs:enumeration value="Restart"/>
M openbox/action.copenbox/action.c

@@ -557,6 +557,16 @@ action_resize_relative_vert,

setup_client_action }, { + "moverelative", + action_move_relative, + setup_client_action + }, + { + "resizerelative", + action_resize_relative, + setup_client_action + }, + { "maximizefull", action_maximize_full, setup_client_action

@@ -872,7 +882,21 @@ act->func == action_move_relative_vert ||

act->func == action_resize_relative_horz || act->func == action_resize_relative_vert) { if ((n = parse_find_node("delta", node->xmlChildrenNode))) - act->data.relative.delta = parse_int(doc, n); + act->data.relative.deltax = parse_int(doc, n); + } else if (act->func == action_move_relative) { + if ((n = parse_find_node("x", node->xmlChildrenNode))) + act->data.relative.deltax = parse_int(doc, n); + if ((n = parse_find_node("y", node->xmlChildrenNode))) + act->data.relative.deltay = parse_int(doc, n); + } else if (act->func == action_resize_relative) { + if ((n = parse_find_node("left", node->xmlChildrenNode))) + act->data.relative.deltaxl = parse_int(doc, n); + if ((n = parse_find_node("up", node->xmlChildrenNode))) + act->data.relative.deltayu = parse_int(doc, n); + if ((n = parse_find_node("right", node->xmlChildrenNode))) + act->data.relative.deltax = parse_int(doc, n); + if ((n = parse_find_node("down", node->xmlChildrenNode))) + act->data.relative.deltay = parse_int(doc, n); } else if (act->func == action_desktop) { if ((n = parse_find_node("desktop", node->xmlChildrenNode))) act->data.desktop.desk = parse_int(doc, n);

@@ -1162,7 +1186,7 @@ void action_move_relative_horz(union ActionData *data)

{ ObClient *c = data->relative.any.c; client_action_start(data); - client_move(c, c->area.x + data->relative.delta, c->area.y); + client_move(c, c->area.x + data->relative.deltax, c->area.y); client_action_end(data); }

@@ -1170,7 +1194,7 @@ void action_move_relative_vert(union ActionData *data)

{ ObClient *c = data->relative.any.c; client_action_start(data); - client_move(c, c->area.x, c->area.y + data->relative.delta); + client_move(c, c->area.x, c->area.y + data->relative.deltax); client_action_end(data); }

@@ -1190,7 +1214,7 @@ {

ObClient *c = data->relative.any.c; client_action_start(data); client_resize(c, - c->area.width + data->relative.delta * c->size_inc.width, + c->area.width + data->relative.deltax * c->size_inc.width, c->area.height); client_action_end(data); }

@@ -1201,9 +1225,32 @@ ObClient *c = data->relative.any.c;

if (!c->shaded) { client_action_start(data); client_resize(c, c->area.width, c->area.height + - data->relative.delta * c->size_inc.height); + data->relative.deltax * c->size_inc.height); client_action_end(data); } +} + +void action_move_relative(union ActionData *data) +{ + ObClient *c = data->relative.any.c; + client_action_start(data); + client_move(c, c->area.x + data->relative.deltax, c->area.y + + data->relative.deltay); + client_action_end(data); +} + +void action_resize_relative(union ActionData *data) +{ + ObClient *c = data->relative.any.c; + client_action_start(data); + client_move_resize(c, + c->area.x - data->relative.deltaxl * c->size_inc.width, + c->area.y - data->relative.deltayu * c->size_inc.height, + c->area.width + data->relative.deltax * c->size_inc.width + + data->relative.deltaxl * c->size_inc.width, + c->area.height + data->relative.deltay * c->size_inc.height + + data->relative.deltayu * c->size_inc.height); + client_action_end(data); } void action_maximize_full(union ActionData *data)
M openbox/action.hopenbox/action.h

@@ -82,7 +82,10 @@ };

struct MoveResizeRelative { struct AnyAction any; - gint delta; + gint deltax; + gint deltay; + gint deltaxl; + gint deltayu; }; struct SendToDesktop {