all repos — openbox @ c02f68499f8cb001f48cbc6d4af43a6fe9cf681d

openbox fork - make it a bit more like ryudo

option to make dragging and findedge ignore windows on lower layers
Mikael Magnusson mikachu@comhem.se
commit

c02f68499f8cb001f48cbc6d4af43a6fe9cf681d

parent

1ed2670b891929be289b4099ee752a592e8f123b

6 files changed, 26 insertions(+), 0 deletions(-)

jump to
M data/rc.xml.indata/rc.xml.in

@@ -11,6 +11,7 @@

<resistance> <strength>10</strength> <screen_edge_strength>20</screen_edge_strength> + <edges_hit_layers_below>no</edges_hit_layers_below> </resistance> <focus>
M data/rc.xsddata/rc.xsd

@@ -65,6 +65,7 @@ </xs:annotation>

<xs:sequence> <xs:element name="strength" type="xs:integer"/> <xs:element name="screen_edge_strength" type="xs:integer"/> + <xs:element name="edges_hit_layers_below" type="xs:yesorno"/> </xs:sequence> </xs:complexType> <xs:complexType name="focus">
M openbox/client.copenbox/client.c

@@ -3151,6 +3151,8 @@ if(screen_desktop != cur->desktop && cur->desktop != DESKTOP_ALL)

continue; if(cur->iconic) continue; + if(cur->layer < c->layer && !config_resist_layers_below) + continue; his_edge_start = cur->frame->area.x; his_edge_end = cur->frame->area.x + cur->frame->area.width;

@@ -3191,6 +3193,8 @@ continue;

if(screen_desktop != cur->desktop && cur->desktop != DESKTOP_ALL) continue; if(cur->iconic) + continue; + if(cur->layer < c->layer && !config_resist_layers_below) continue; his_edge_start = cur->frame->area.x;

@@ -3234,6 +3238,8 @@ if(screen_desktop != cur->desktop && cur->desktop != DESKTOP_ALL)

continue; if(cur->iconic) continue; + if(cur->layer < c->layer && !config_resist_layers_below) + continue; his_edge_start = cur->frame->area.y; his_edge_end = cur->frame->area.y + cur->frame->area.height;

@@ -3275,6 +3281,8 @@ continue;

if(screen_desktop != cur->desktop && cur->desktop != DESKTOP_ALL) continue; if(cur->iconic) + continue; + if(cur->layer < c->layer && !config_resist_layers_below) continue; his_edge_start = cur->frame->area.y;
M openbox/config.copenbox/config.c

@@ -73,6 +73,8 @@

gint config_resist_win; gint config_resist_edge; +gboolean config_resist_layers_below; + /* <keybind key="C-x">

@@ -422,6 +424,8 @@ if ((n = parse_find_node("strength", node)))

config_resist_win = parse_int(doc, n); if ((n = parse_find_node("screen_edge_strength", node))) config_resist_edge = parse_int(doc, n); + if ((n = parse_find_node("edges_hit_layers_below", node))) + config_resist_layers_below = parse_bool(doc, n); } typedef struct

@@ -589,6 +593,7 @@ parse_register(i, "mouse", parse_mouse, NULL);

config_resist_win = 10; config_resist_edge = 20; + config_resist_layers_below = FALSE; parse_register(i, "resistance", parse_resistance, NULL);
M openbox/config.hopenbox/config.h

@@ -104,6 +104,8 @@ /*! Number of pixels to resist while crossing another window's edge */

extern gint config_resist_win; /*! Number of pixels to resist while crossing a screen's edge */ extern gint config_resist_edge; +/*! Should windows resist edges at layers below */ +extern gboolean config_resist_layers_below; /*! Warp near edge on menu? */ extern gboolean config_menu_warppointer;
M openbox/resist.copenbox/resist.c

@@ -54,8 +54,13 @@

if (!WINDOW_IS_CLIENT(it->data)) continue; target = it->data; + /* don't snap to self or non-visibles */ if (!target->frame->visible || target == c) continue; + + /* don't snap to windows in layers beneath */ + if(target->layer < c->layer && !config_resist_layers_below) + continue; tl = RECT_LEFT(target->frame->area) - 1; tt = RECT_TOP(target->frame->area) - 1;

@@ -194,6 +199,10 @@ target = it->data;

/* don't snap to invisibles or ourself */ if (!target->frame->visible || target == c) continue; + + /* don't snap to windows in layers beneath */ + if(target->layer < c->layer && !config_resist_layers_below) + continue; tl = RECT_LEFT(target->frame->area); tr = RECT_RIGHT(target->frame->area);