Tiling2: Added an hack to workaround the stupid e resize bug.
authorTom Hacohen <tom@stosb.com>
Wed, 15 Jan 2014 13:03:16 +0000 (13:03 +0000)
committerTom Hacohen <tom@stosb.com>
Fri, 21 Feb 2014 09:15:06 +0000 (09:15 +0000)
The bug with the frame created after the first resize.

src/modules/tiling/e_mod_tiling.c

index b317e26..43bd45f 100644 (file)
@@ -49,6 +49,7 @@ typedef struct Client_Extra {
     } orig;
     overlay_t overlay;
     char key[4];
+    int last_frame_adjustment; // FIXME: Hack for frame resize bug.
 } Client_Extra;
 
 struct tiling_g tiling_g = {
@@ -242,6 +243,15 @@ _e_client_move_resize(E_Client *ec,
                       int       w,
                       int       h)
 {
+    Client_Extra *extra;
+
+    extra = eina_hash_find(_G.client_extras, &ec);
+    if (!extra) {
+         ERR("No extra for %p", ec);
+         return;
+    }
+
+    extra->last_frame_adjustment = MAX(ec->h - ec->client.h, ec->w - ec->client.w);
     DBG("%p -> %dx%d+%d+%d", ec, w, h, x, y);
     evas_object_geometry_set(ec->frame, x, y, w, h);
 }
@@ -639,6 +649,13 @@ static void _move_or_resize(E_Client *ec)
          return;
       }
 
+    if (!extra->last_frame_adjustment)
+      {
+         printf("This is probably because of the frame adjustment bug. Return\n");
+         _reapply_tree();
+         return;
+      }
+
     Window_Tree *item = tiling_window_tree_client_find(_G.tinfo->tree, ec);
     if (!item)
       {