Handle resizing border when vkbd appears. Works for single mode and dual
mode (top & bottom). SVN revision: 44438
This commit is contained in:
parent
50e925ff40
commit
eb8d577866
|
@ -16,16 +16,6 @@ _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 ((bd->need_fullscreen) || (bd->fullscreen))
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
@ -36,15 +26,6 @@ _border_del(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 ((bd->need_fullscreen) || (bd->fullscreen))
|
||||
{
|
||||
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
|
||||
|
@ -134,82 +115,72 @@ _zone_layout(E_Zone *z)
|
|||
e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2)));
|
||||
}
|
||||
else if ((bd->need_fullscreen) || (bd->fullscreen))
|
||||
e_border_fullscreen(bd, E_FULLSCREEN_RESIZE);
|
||||
else
|
||||
{
|
||||
int kx, ky, kw, kh;
|
||||
|
||||
e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh);
|
||||
if (!il_cfg->policy.mode.dual)
|
||||
{
|
||||
if (illume_border_is_conformant(bd))
|
||||
if ((bd->w != kw) || (bd->h != kh))
|
||||
{
|
||||
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);
|
||||
bd->w = kw;
|
||||
bd->h = kh;
|
||||
bd->client.w = kw;
|
||||
bd->client.h = kh;
|
||||
bd->changes.size = 1;
|
||||
}
|
||||
else
|
||||
if ((bd->x != kx) || (bd->y != ky))
|
||||
{
|
||||
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));
|
||||
bd->x = kx;
|
||||
bd->y = ky;
|
||||
bd->changes.pos = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else /* not fullscreen border; handle all other borders */
|
||||
{
|
||||
int kx, ky, kw, kh, ps, ss;
|
||||
int bx, by, bw, bh;
|
||||
|
||||
ss = 0;
|
||||
ps = 0;
|
||||
e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh);
|
||||
if (!illume_border_is_conformant(bd))
|
||||
{
|
||||
if (kh >= z->h) ps = panelsize;
|
||||
ss = shelfsize;
|
||||
}
|
||||
bx = kx;
|
||||
by = (ky + ss);
|
||||
bw = kw;
|
||||
bh = (kh - ss - ps);
|
||||
if (il_cfg->policy.mode.dual)
|
||||
{
|
||||
E_Border *b;
|
||||
int bx, by, bw, bh;
|
||||
|
||||
bx = z->x;
|
||||
bw = z->w;
|
||||
by = (z->y + shelfsize);
|
||||
bh = (z->h - shelfsize - panelsize);
|
||||
|
||||
/* in dual mode */
|
||||
if (il_cfg->policy.mode.side == 0) /* top/bottom */
|
||||
{
|
||||
bh = ((z->h - shelfsize - panelsize) / 2);
|
||||
bh = (bh / 2);
|
||||
b = illume_border_at_xy_get(bx, by);
|
||||
if ((b) && (bd != b))
|
||||
by = by + bh;
|
||||
by = (by + bh);
|
||||
else if (b)
|
||||
by = bd->fx.y;
|
||||
if (illume_border_is_conformant(bd))
|
||||
{
|
||||
by = z->y;
|
||||
bh = (z->h / 2);
|
||||
if ((b) && (bd != b))
|
||||
{
|
||||
by = b->fx.y + b->h;
|
||||
bh = (z->h - (b->fx.y + b->h));
|
||||
}
|
||||
else if (b)
|
||||
by = bd->fx.y;
|
||||
}
|
||||
}
|
||||
else if (il_cfg->policy.mode.side == 1) /* left/right */
|
||||
{
|
||||
bw = (z->w / 2);
|
||||
b = illume_border_at_xy_get(bx, by);
|
||||
bw = (bw / 2);
|
||||
b = illume_border_at_xy_get(kx, by);
|
||||
if ((b) && (bd != b))
|
||||
bx = bx + bw;
|
||||
bx = (bx + bw);
|
||||
else if (b)
|
||||
bx = bd->x;
|
||||
if (illume_border_is_conformant(bd))
|
||||
{
|
||||
bx = z->x;
|
||||
by = z->y;
|
||||
bw = (z->w / 2);
|
||||
bh = z->h;
|
||||
if ((b) && (bd != b))
|
||||
bx = b->fx.x + b->w;
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue