]> Dogcows Code - chaz/openbox/commitdiff
bug fixes for growtoedge from tore. props to tore for all the growtoedge and movetoed...
authorDana Jansens <danakj@orodu.net>
Tue, 12 Aug 2003 19:25:03 +0000 (19:25 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 12 Aug 2003 19:25:03 +0000 (19:25 +0000)
openbox/action.c
openbox/client.c

index 0ab8fe7bd87adf634c988d2f829cb8bb32205437..9c2ded309ec66164b1c5e3814efbc585816452af 100644 (file)
@@ -1262,7 +1262,7 @@ void action_growtoedge(union ActionData *data)
     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 @@ void action_growtoedge(union ActionData *data)
         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 @@ void action_growtoedge(union ActionData *data)
         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();
index 81eafa7d0110b0e9d6775e65230dba69f8f7fcf0..6333c892bc1cd7fa36e483cb2fcccc50ede1116d 100644 (file)
@@ -2796,11 +2796,11 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
             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 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
             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 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
             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 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
             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)
This page took 0.034852 seconds and 4 git commands to generate.