diff --git a/src/modules/illume2/e_mod_layout.c b/src/modules/illume2/e_mod_layout.c index c2c81ef5e..4789c889b 100644 --- a/src/modules/illume2/e_mod_layout.c +++ b/src/modules/illume2/e_mod_layout.c @@ -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 * diff --git a/src/modules/illume2/e_mod_layout.h b/src/modules/illume2/e_mod_layout.h index e4889dfb5..cd879ebd8 100644 --- a/src/modules/illume2/e_mod_layout.h +++ b/src/modules/illume2/e_mod_layout.h @@ -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); diff --git a/src/modules/illume2/e_mod_layout_illume.c b/src/modules/illume2/e_mod_layout_illume.c index 6fe315682..3a3b83193 100644 --- a/src/modules/illume2/e_mod_layout_illume.c +++ b/src/modules/illume2/e_mod_layout_illume.c @@ -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); + } } } }