Make basic dual mode work :) (this does not cover conformant apps yet, just
authorChristopher Michael <cpmichael1@comcast.net>
Mon, 7 Dec 2009 21:14:28 +0000 (21:14 +0000)
committerChristopher Michael <cpmichael1@comcast.net>
Mon, 7 Dec 2009 21:14:28 +0000 (21:14 +0000)
'basic' apps).

SVN revision: 44260

src/modules/illume2/e_mod_layout.c
src/modules/illume2/e_mod_layout.h
src/modules/illume2/e_mod_layout_illume.c

index c2c81ef..4789c88 100644 (file)
@@ -347,24 +347,23 @@ illume_border_valid_borders_get(void)
    return ret;
 }
 
-Eina_Bool 
-illume_border_at_xy(int x, int y) 
+E_Border *
+illume_border_at_xy_get(int x, int y) 
 {
    Eina_List *bds, *l;
-   E_Border *bd;
-   int ret = EINA_FALSE;
+   E_Border *bd, *b = NULL;
 
    bds = illume_border_valid_borders_get();
    EINA_LIST_FOREACH(bds, l, bd) 
      {
-        if ((bd->x == x) && (bd->y == y)) 
+        if ((bd->fx.x == x) && (bd->fx.y == y)) 
           {
-             ret = EINA_TRUE;
+             b = bd;
              break;
           }
      }
    eina_list_free(bds);
-   return ret;
+   return b;
 }
 
 E_Border *
index e4889df..cd879eb 100644 (file)
@@ -54,7 +54,7 @@ Eina_Bool illume_border_is_overlay(E_Border *bd);
 Eina_Bool illume_border_is_conformant(E_Border *bd);
 
 Eina_List *illume_border_valid_borders_get(void);
-Eina_Bool illume_border_at_xy(int x, int y);
+E_Border *illume_border_at_xy_get(int x, int y);
 E_Border *illume_border_top_shelf_get(void);
 E_Border *illume_border_bottom_panel_get(void);
 
index 6fe3156..3a3b831 100644 (file)
@@ -19,6 +19,15 @@ _border_add(E_Border *bd)
    if (illume_border_is_top_shelf(bd)) return;
    if (illume_border_is_bottom_panel(bd)) return;
    if (illume_border_is_keyboard(bd)) return;
+   if (illume_border_is_conformant(bd)) 
+     {
+        E_Border *b;
+
+        b = illume_border_top_shelf_get();
+        if (b) e_border_fx_offset(b, 0, -shelfsize);
+        b = illume_border_bottom_panel_get();
+        if (b) e_border_fx_offset(b, 0, -panelsize);
+     }
    e_border_raise(bd);
    e_border_focus_set(bd, 1, 1);
 }
@@ -26,7 +35,12 @@ _border_add(E_Border *bd)
 static void
 _border_del(E_Border *bd)
 { // handle a border being deleted
+   E_Border *b;
 
+   b = illume_border_top_shelf_get();
+   if (b) e_border_fx_offset(b, 0, 0);
+   b = illume_border_bottom_panel_get();
+   if (b) e_border_fx_offset(b, 0, 0);
 }
 
 static void
@@ -85,55 +99,76 @@ _zone_layout(E_Zone *z)
         illume_border_min_get(bd, &mw, &mh);
         if (illume_border_is_top_shelf(bd))
           {
-             if ((bd->x != z->x) || (bd->y != z->y) || (bd->w != z->w) || 
-                 (bd->h != shelfsize))
-               e_border_move_resize(bd, z->x, z->y, z->w, shelfsize);
+             if ((bd->w != z->w) || (bd->h != shelfsize))
+               e_border_resize(bd, z->w, shelfsize);
+             if ((bd->x != z->x) || (bd->y != z->y))
+               e_border_fx_offset(bd, z->x, z->y);
              e_border_stick(bd);
           }
         else if (illume_border_is_bottom_panel(bd))
           {
-             if ((bd->x != z->x) || (bd->y != (z->y + z->h - panelsize)) || 
-                 (bd->w != z->w) || (bd->h != panelsize))
-               e_border_move_resize(bd, z->x, z->y + z->h - panelsize, 
-                                    z->w, panelsize);
+             if ((bd->w != z->w) || (bd->h != panelsize))
+               e_border_resize(bd, z->w, panelsize);
+             if ((bd->x != z->x) || (bd->y != (z->y + z->h - panelsize)))
+               e_border_fx_offset(bd, z->x, (z->y + z->h - panelsize));
              e_border_stick(bd);
           }
         else if (illume_border_is_keyboard(bd))
           {
-             if ((bd->x != z->x) || (bd->y != (z->y + z->h - kbdsize)) || 
-                 (bd->w != z->w) || (bd->h != kbdsize))
-             e_border_move_resize(bd, z->x, z->y + z->h - kbdsize, 
-                                  z->w, kbdsize);
-          }
-        else if (illume_border_is_home(bd))
-          {
-             if ((bd->x != z->x) || (bd->y != z->y + shelfsize) || 
-                 (bd->w != z->w) || (bd->h != (z->h - shelfsize - panelsize)))
-               e_border_move_resize(bd, z->x, z->y + shelfsize, z->w, 
-                                    z->h - shelfsize - panelsize);
+             if ((bd->w != z->w) || (bd->h != kbdsize))
+               e_border_resize(bd, z->w, kbdsize);
+             if ((bd->x != z->x) || (bd->y != (z->y + z->h - kbdsize)))
+               e_border_fx_offset(bd, z->x, (z->y + z->h - kbdsize));
           }
         else if (illume_border_is_dialog(bd))
           {
              if (mh > z->h) mh = z->h;
-             if ((bd->x != z->x) || (bd->y != (z->y + ((z->h - mh) / 2))) || 
-                 (bd->w != z->w) || (bd->h != mh))
-               e_border_move_resize(bd, z->x, z->y + ((z->h - mh) / 2), 
-                                    z->w, mh);
+             if ((bd->w != z->w) || (bd->h != mh))
+               e_border_resize(bd, z->w, mh);
+             if ((bd->x != z->x) || (bd->y != (z->y + ((z->h - mh) / 2))))
+               e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2)));
           }
         else
           {
-             if (illume_border_is_conformant(bd)
+             if (!il_cfg->policy.mode.dual
                {
-                  if ((bd->x != z->x) || (bd->y != z->y) || 
-                      (bd->w != z->w) || (bd->h != z->h))
-                    e_border_move_resize(bd, z->x, z->y, z->w, z->h);
+                  if (illume_border_is_conformant(bd)) 
+                    {
+                       if ((bd->w != z->w) || (bd->h != z->h))
+                         e_border_resize(bd, z->w, z->h);
+                       if ((bd->x != z->x) || (bd->y != z->y))
+                         e_border_fx_offset(bd, z->x, z->y);
+                    }
+                  else 
+                    {
+                       if ((bd->w != z->w) || (bd->h != (z->h - shelfsize - panelsize)))
+                         e_border_resize(bd, z->w, (z->h - shelfsize - panelsize));
+                       if ((bd->x != z->x) || (bd->y != (z->y + shelfsize)))
+                         e_border_fx_offset(bd, z->x, (z->y + shelfsize));
+                    }
                }
              else 
                {
-                  if ((bd->x != z->x) || (bd->y != z->y + shelfsize) || 
-                      (bd->w != z->w) || (bd->h != z->h - shelfsize - panelsize))
-                    e_border_move_resize(bd, z->x, z->y + shelfsize, z->w, 
-                                         z->h - shelfsize - panelsize);
+                  E_Border *b;
+                  int bx, by, bw, bh;
+
+                  /* in dual mode */
+                  if (il_cfg->policy.mode.side == 0) /* top/left */
+                    {
+                       bx = z->x;
+                       bw = z->w;
+                       by = (z->y + shelfsize);
+                       bh = ((z->h - shelfsize - panelsize) / 2);
+                       b = illume_border_at_xy_get(bx, by);
+                       if ((b) && (bd != b)) 
+                         by = by + bh;
+                       else if (b) 
+                         by = bd->y;
+                       if ((bd->w != bw) || (bd->h != bh))
+                         e_border_resize(bd, bw, bh);
+                       if ((bd->x != bx) || (bd->y != by))
+                         e_border_fx_offset(bd, bx, by);
+                    }
                }
           }
      }