all repos — openbox @ e531f6900672fc278481b7ebf664fe2221517909

openbox fork - make it a bit more like ryudo

bug fixes for growtoedge from tore. props to tore for all the growtoedge and movetoedge code, and directional focus code also since i dont think i mentioned his name before in the changelogs woot.
Dana Jansens danakj@orodu.net
commit

e531f6900672fc278481b7ebf664fe2221517909

parent

1045079482453424f8320de99639390e3020eb72

2 files changed, 16 insertions(+), 14 deletions(-)

jump to
M openbox/action.copenbox/action.c

@@ -1262,7 +1262,7 @@

switch(data->diraction.direction) { case OB_DIRECTION_NORTH: dest = client_directional_edge_search(c, OB_DIRECTION_NORTH); - if(a->y > (y - c->size_inc.height)) + if (a->y == y) height = c->frame->area.height / 2; else { height = c->frame->area.y + c->frame->area.height - dest;

@@ -1271,7 +1271,7 @@ }

break; case OB_DIRECTION_WEST: dest = client_directional_edge_search(c, OB_DIRECTION_WEST); - if(a->x > (x - c->size_inc.width)) + if (a->x == x) width = c->frame->area.width / 2; else { width = c->frame->area.x + c->frame->area.width - dest;

@@ -1280,21 +1280,23 @@ }

break; case OB_DIRECTION_SOUTH: dest = client_directional_edge_search(c, OB_DIRECTION_SOUTH); - if(a->y + a->height < - (y + c->frame->area.height + c->size_inc.height)) { + if (a->y + a->height == y + c->frame->area.height) { height = c->frame->area.height / 2; y = a->y + a->height - height; } else height = dest - c->frame->area.y; + y += (height - c->frame->area.height) % c->size_inc.height; + height -= (height - c->frame->area.height) % c->size_inc.height; break; case OB_DIRECTION_EAST: dest = client_directional_edge_search(c, OB_DIRECTION_EAST); - if(a->x + a->width < - (x + c->frame->area.width + c->size_inc.width)) { + if (a->x + a->width == x + c->frame->area.width) { width = c->frame->area.width / 2; x = a->x + a->width - width; } else width = dest - c->frame->area.x; + x += (width - c->frame->area.width) % c->size_inc.width; + width -= (width - c->frame->area.width) % c->size_inc.width; break; default: g_assert_not_reached();
M openbox/client.copenbox/client.c

@@ -2796,11 +2796,11 @@ his_edge_start = cur->frame->area.x;

his_edge_end = cur->frame->area.x + cur->frame->area.width; his_offset = cur->frame->area.y + cur->frame->area.height; - if(his_offset + c->size_inc.height > my_offset) + if(his_offset + 1 > my_offset) continue; if(his_offset < dest) - continue; + continue; if(his_edge_start >= my_edge_start && his_edge_start <= my_edge_end)

@@ -2837,11 +2837,11 @@ his_edge_end = cur->frame->area.x + cur->frame->area.width;

his_offset = cur->frame->area.y; - if(his_offset - c->size_inc.height < my_offset) + if(his_offset - 1 < my_offset) continue; if(his_offset > dest) - continue; + continue; if(his_edge_start >= my_edge_start && his_edge_start <= my_edge_end)

@@ -2877,11 +2877,11 @@ his_edge_start = cur->frame->area.y;

his_edge_end = cur->frame->area.y + cur->frame->area.height; his_offset = cur->frame->area.x + cur->frame->area.width; - if(his_offset + c->size_inc.width > my_offset) + if(his_offset + 1 < my_offset) continue; if(his_offset < dest) - continue; + continue; if(his_edge_start >= my_edge_start && his_edge_start <= my_edge_end)

@@ -2918,11 +2918,11 @@ his_edge_start = cur->frame->area.y;

his_edge_end = cur->frame->area.y + cur->frame->area.height; his_offset = cur->frame->area.x; - if(his_offset - c->size_inc.width < my_offset) + if(his_offset - 1 < my_offset) continue; if(his_offset > dest) - continue; + continue; if(his_edge_start >= my_edge_start && his_edge_start <= my_edge_end)