]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
adding trunk
[chaz/openbox] / openbox / client.c
index 164ab91b557bcb4061bf1eb6d7d68b42e5c94a9c..071ecc4d7b262392bf25890e4965b3a6f3ede687 100644 (file)
@@ -1356,7 +1356,8 @@ static void client_update_transient_tree(ObClient *self,
 
     /** If we change our group transient-ness, our children change their
         effect group transient-ness, which affects how they relate to other
-        group windows */
+        group windows **/
+
     for (it = self->transients; it; it = g_slist_next(it)) {
         c = it->data;
         if (!c->transient_for_group)
@@ -3956,7 +3957,7 @@ void client_find_edge_directional(ObClient *self, ObDirection dir,
         case OB_DIRECTION_WEST:
             if (my_head <= head + 1)
                 skip_head = TRUE;
-            if (my_head + my_size - 1 <= tail + 1)
+            if (my_head + my_size - 1 <= tail)
                 skip_tail = TRUE;
             if (head < *dest)
                 skip_head = TRUE;
@@ -3967,7 +3968,7 @@ void client_find_edge_directional(ObClient *self, ObDirection dir,
         case OB_DIRECTION_EAST:
             if (my_head >= head - 1)
                 skip_head = TRUE;
-            if (my_head - my_size + 1 >= tail - 1)
+            if (my_head - my_size + 1 >= tail)
                 skip_tail = TRUE;
             if (head > *dest)
                 skip_head = TRUE;
@@ -4064,36 +4065,36 @@ void client_find_resize_directional(ObClient *self, ObDirection side,
                                     gboolean grow,
                                     gint *x, gint *y, gint *w, gint *h)
 {
-    gint head, size;
+    gint head;
     gint e, e_start, e_size, delta;
     gboolean near;
     ObDirection dir;
 
     switch (side) {
     case OB_DIRECTION_EAST:
-        head = RECT_RIGHT(self->frame->area) + (self->size_inc.width - 1);
-        size = self->frame->area.width;
+        head = RECT_RIGHT(self->frame->area) +
+            (self->size_inc.width - 1) * (grow ? 1 : -1);
         e_start = RECT_TOP(self->frame->area);
         e_size = self->frame->area.height;
         dir = grow ? OB_DIRECTION_EAST : OB_DIRECTION_WEST;
         break;
     case OB_DIRECTION_WEST:
-        head = RECT_LEFT(self->frame->area) - (self->size_inc.width - 1);
-        size = self->frame->area.width;
+        head = RECT_LEFT(self->frame->area) -
+            (self->size_inc.width - 1) * (grow ? 1 : -1);
         e_start = RECT_TOP(self->frame->area);
         e_size = self->frame->area.height;
         dir = grow ? OB_DIRECTION_WEST : OB_DIRECTION_EAST;
         break;
     case OB_DIRECTION_NORTH:
-        head = RECT_TOP(self->frame->area) - (self->size_inc.height - 1);
-        size = self->frame->area.height;
+        head = RECT_TOP(self->frame->area) -
+            (self->size_inc.height - 1) * (grow ? 1 : -1);
         e_start = RECT_LEFT(self->frame->area);
         e_size = self->frame->area.width;
         dir = grow ? OB_DIRECTION_NORTH : OB_DIRECTION_SOUTH;
         break;
     case OB_DIRECTION_SOUTH:
-        head = RECT_BOTTOM(self->frame->area) + (self->size_inc.height - 1);
-        size = self->frame->area.height;
+        head = RECT_BOTTOM(self->frame->area) +
+            (self->size_inc.height - 1) * (grow ? 1 : -1);
         e_start = RECT_LEFT(self->frame->area);
         e_size = self->frame->area.width;
         dir = grow ? OB_DIRECTION_SOUTH : OB_DIRECTION_NORTH;
@@ -4102,32 +4103,34 @@ void client_find_resize_directional(ObClient *self, ObDirection side,
         g_assert_not_reached();
     }
 
-    client_find_edge_directional(self, dir, head, size,
+    ob_debug("head %d dir %d\n", head, dir);
+    client_find_edge_directional(self, dir, head, 1,
                                  e_start, e_size, &e, &near);
+    ob_debug("edge %d\n", e);
     *x = self->frame->area.x;
     *y = self->frame->area.y;
     *w = self->frame->area.width;
     *h = self->frame->area.height;
     switch (side) {
     case OB_DIRECTION_EAST:
-        if (near) --e;
+        if (grow == near) --e;
         delta = e - RECT_RIGHT(self->frame->area);
         *w += delta;
         break;
     case OB_DIRECTION_WEST:
-        if (near) ++e;
+        if (grow == near) ++e;
         delta = RECT_LEFT(self->frame->area) - e;
         *x -= delta;
         *w += delta;
         break;
     case OB_DIRECTION_NORTH:
-        if (near) ++e;
+        if (grow == near) ++e;
         delta = RECT_TOP(self->frame->area) - e;
         *y -= delta;
         *h += delta;
         break;
     case OB_DIRECTION_SOUTH:
-        if (near) --e;
+        if (grow == near) --e;
         delta = e - RECT_BOTTOM(self->frame->area);
         *h += delta;
         break;
@@ -4172,30 +4175,3 @@ gboolean client_has_group_siblings(ObClient *self)
 {
     return self->group && self->group->members->next;
 }
-
-ObClientIcon *client_thumbnail(ObClient *self, gint wantw, gint wanth)
-{
-    ObClientIcon *ret;
-    RrPixel32 *data;
-    gint w, h;
-
-    if (!self->frame->pixmap) return NULL;
-    if (!RrPixmapToRGBA(ob_rr_inst, self->frame->pixmap, None, &w, &h, &data))
-        return NULL;
-
-    /* resize the thumbnail (within aspect ratio) to the given sizes */
-
-    ret = g_new(ObClientIcon, 1);
-    ret->data = data;
-    ret->width = w;
-    ret->height = h;
-    return ret;
-}
-
-void clienticon_free(ObClientIcon *ci)
-{
-    if (ci) {
-        g_free(ci->data);
-        g_free(ci);
-    }
-}
This page took 0.024825 seconds and 4 git commands to generate.