forked from enlightenment/enlightenment
e:tiling: add stack when moving on top/left side
SVN revision: 80535
This commit is contained in:
parent
3d48900841
commit
504ba6fcd1
|
@ -1788,8 +1788,10 @@ _check_moving_anims(const E_Border *bd, const Border_Extra *extra, int stack)
|
||||||
|
|
||||||
/* move left */
|
/* move left */
|
||||||
overlay = &_G.move_overlays[MOVE_LEFT];
|
overlay = &_G.move_overlays[MOVE_LEFT];
|
||||||
if ((!_G.tinfo->conf->use_rows && stack > 0)
|
if ((_G.tinfo->conf->use_rows && l->prev)
|
||||||
|| (_G.tinfo->conf->use_rows && l->prev)) {
|
|| (!_G.tinfo->conf->use_rows && !_G.tinfo->stacks[TILING_MAX_STACKS -1]
|
||||||
|
&& (bd != _G.tinfo->stacks[0]->data || _G.tinfo->stacks[0]->next)))
|
||||||
|
{
|
||||||
if (overlay->popup) {
|
if (overlay->popup) {
|
||||||
Evas_Coord ew, eh;
|
Evas_Coord ew, eh;
|
||||||
|
|
||||||
|
@ -1890,7 +1892,9 @@ _check_moving_anims(const E_Border *bd, const Border_Extra *extra, int stack)
|
||||||
/* move up */
|
/* move up */
|
||||||
overlay = &_G.move_overlays[MOVE_UP];
|
overlay = &_G.move_overlays[MOVE_UP];
|
||||||
if ((!_G.tinfo->conf->use_rows && l->prev)
|
if ((!_G.tinfo->conf->use_rows && l->prev)
|
||||||
|| (_G.tinfo->conf->use_rows && stack > 0)) {
|
|| (_G.tinfo->conf->use_rows && !_G.tinfo->stacks[TILING_MAX_STACKS -1]
|
||||||
|
&& (bd != _G.tinfo->stacks[0]->data || _G.tinfo->stacks[0]->next)))
|
||||||
|
{
|
||||||
if (overlay->popup) {
|
if (overlay->popup) {
|
||||||
Evas_Coord ew, eh;
|
Evas_Coord ew, eh;
|
||||||
|
|
||||||
|
@ -2103,10 +2107,75 @@ _move_left_cols(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
Border_Extra *extra;
|
Border_Extra *extra;
|
||||||
int stack;
|
int stack;
|
||||||
int i;
|
int i;
|
||||||
|
int nb_stacks;
|
||||||
|
|
||||||
stack = get_stack(bd);
|
stack = get_stack(bd);
|
||||||
if (stack <= 0)
|
assert(stack >= 0);
|
||||||
|
nb_stacks = get_stack_count();
|
||||||
|
|
||||||
|
extra = eina_hash_find(_G.border_extras, &bd);
|
||||||
|
if (!extra) {
|
||||||
|
ERR("No extra for %p", bd);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack == 0) {
|
||||||
|
int x, y, w, h;
|
||||||
|
int width = 0;
|
||||||
|
|
||||||
|
if (nb_stacks >= TILING_MAX_STACKS)
|
||||||
|
return;
|
||||||
|
if (_G.tinfo->stacks[0]->data == bd && !_G.tinfo->stacks[0]->next)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EINA_LIST_REMOVE(_G.tinfo->stacks[0], bd);
|
||||||
|
for (i = TILING_MAX_STACKS; i -- > 0;) {
|
||||||
|
_G.tinfo->stacks[i] = _G.tinfo->stacks[i-1];
|
||||||
|
}
|
||||||
|
_G.tinfo->stacks[0] = NULL;
|
||||||
|
EINA_LIST_APPEND(_G.tinfo->stacks[0], bd);
|
||||||
|
|
||||||
|
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
||||||
|
|
||||||
|
width = w / (nb_stacks + 1);
|
||||||
|
_G.tinfo->pos[0] = x;
|
||||||
|
_G.tinfo->size[0] = width;
|
||||||
|
extra->expected.x = x;
|
||||||
|
extra->expected.y = y;
|
||||||
|
extra->expected.w = width;
|
||||||
|
extra->expected.h = h;
|
||||||
|
|
||||||
|
w -= width;
|
||||||
|
x += width;
|
||||||
|
|
||||||
|
for (i = 1; i <= nb_stacks; i++) {
|
||||||
|
width = w / (nb_stacks + 1 - i);
|
||||||
|
|
||||||
|
_set_stack_geometry(i, x, width);
|
||||||
|
|
||||||
|
w -= width;
|
||||||
|
x += width;
|
||||||
|
}
|
||||||
|
_reorganize_stack(1);
|
||||||
|
|
||||||
|
_e_border_move_resize(bd,
|
||||||
|
extra->expected.x,
|
||||||
|
extra->expected.y,
|
||||||
|
extra->expected.w,
|
||||||
|
extra->expected.h);
|
||||||
|
_e_border_maximize(bd, E_MAXIMIZE_EXPAND | E_MAXIMIZE_VERTICAL);
|
||||||
|
|
||||||
|
if (nb_stacks + 1 > _G.tinfo->conf->nb_stacks) {
|
||||||
|
_G.tinfo->conf->nb_stacks = nb_stacks + 1;
|
||||||
|
e_config_save_queue();
|
||||||
|
}
|
||||||
|
if (check_moving_anims)
|
||||||
|
_check_moving_anims(bd, extra, 0);
|
||||||
|
ecore_x_pointer_warp(_G.tinfo->desk->zone->container->win,
|
||||||
|
extra->expected.x + extra->expected.w/2,
|
||||||
|
extra->expected.y + extra->expected.h/2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EINA_LIST_REMOVE(_G.tinfo->stacks[stack], bd);
|
EINA_LIST_REMOVE(_G.tinfo->stacks[stack], bd);
|
||||||
|
@ -2114,12 +2183,8 @@ _move_left_cols(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
|
|
||||||
if (!_G.tinfo->stacks[stack]) {
|
if (!_G.tinfo->stacks[stack]) {
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
int width = 0;
|
|
||||||
int nb_stacks;
|
|
||||||
|
|
||||||
/* Remove stack */
|
/* Remove stack */
|
||||||
nb_stacks = get_stack_count();
|
|
||||||
|
|
||||||
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
||||||
|
|
||||||
for (i = stack; i < nb_stacks; i++) {
|
for (i = stack; i < nb_stacks; i++) {
|
||||||
|
@ -2127,8 +2192,9 @@ _move_left_cols(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
}
|
}
|
||||||
_G.tinfo->stacks[nb_stacks] = NULL;
|
_G.tinfo->stacks[nb_stacks] = NULL;
|
||||||
for (i = 0; i < nb_stacks; i++) {
|
for (i = 0; i < nb_stacks; i++) {
|
||||||
|
int width;
|
||||||
|
|
||||||
width = w / (nb_stacks - i);
|
width = w / (nb_stacks - 1 - i);
|
||||||
|
|
||||||
_set_stack_geometry(i, x, width);
|
_set_stack_geometry(i, x, width);
|
||||||
|
|
||||||
|
@ -2141,12 +2207,6 @@ _move_left_cols(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
_reorganize_stack(stack - 1);
|
_reorganize_stack(stack - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
extra = eina_hash_find(_G.border_extras, &bd);
|
|
||||||
if (!extra) {
|
|
||||||
ERR("No extra for %p", bd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (check_moving_anims)
|
if (check_moving_anims)
|
||||||
_check_moving_anims(bd, extra, stack - 1);
|
_check_moving_anims(bd, extra, stack - 1);
|
||||||
|
|
||||||
|
@ -2369,10 +2429,75 @@ _move_up_rows(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
Border_Extra *extra;
|
Border_Extra *extra;
|
||||||
int stack;
|
int stack;
|
||||||
int i;
|
int i;
|
||||||
|
int nb_stacks;
|
||||||
|
|
||||||
stack = get_stack(bd);
|
stack = get_stack(bd);
|
||||||
if (stack <= 0)
|
assert(stack >= 0);
|
||||||
|
nb_stacks = get_stack_count();
|
||||||
|
|
||||||
|
extra = eina_hash_find(_G.border_extras, &bd);
|
||||||
|
if (!extra) {
|
||||||
|
ERR("No extra for %p", bd);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack <= 0) {
|
||||||
|
int x, y, w, h;
|
||||||
|
int height = 0;
|
||||||
|
|
||||||
|
if (nb_stacks >= TILING_MAX_STACKS)
|
||||||
|
return;
|
||||||
|
if (_G.tinfo->stacks[0]->data == bd && !_G.tinfo->stacks[0]->next)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EINA_LIST_REMOVE(_G.tinfo->stacks[0], bd);
|
||||||
|
for (i = TILING_MAX_STACKS; i -- > 0;) {
|
||||||
|
_G.tinfo->stacks[i] = _G.tinfo->stacks[i-1];
|
||||||
|
}
|
||||||
|
_G.tinfo->stacks[0] = NULL;
|
||||||
|
EINA_LIST_APPEND(_G.tinfo->stacks[0], bd);
|
||||||
|
|
||||||
|
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
||||||
|
|
||||||
|
height = h / (nb_stacks + 1);
|
||||||
|
_G.tinfo->pos[0] = y;
|
||||||
|
_G.tinfo->size[0] = height;
|
||||||
|
extra->expected.x = x;
|
||||||
|
extra->expected.y = y;
|
||||||
|
extra->expected.w = w;
|
||||||
|
extra->expected.h = height;
|
||||||
|
|
||||||
|
h -= height;
|
||||||
|
y += height;
|
||||||
|
|
||||||
|
for (i = 1; i <= nb_stacks; i++) {
|
||||||
|
height = h / (nb_stacks + 1 - i);
|
||||||
|
|
||||||
|
_set_stack_geometry(i, y, height);
|
||||||
|
|
||||||
|
h -= height;
|
||||||
|
y += height;
|
||||||
|
}
|
||||||
|
_reorganize_stack(1);
|
||||||
|
|
||||||
|
_e_border_move_resize(bd,
|
||||||
|
extra->expected.x,
|
||||||
|
extra->expected.y,
|
||||||
|
extra->expected.w,
|
||||||
|
extra->expected.h);
|
||||||
|
_e_border_maximize(bd, E_MAXIMIZE_EXPAND | E_MAXIMIZE_VERTICAL);
|
||||||
|
|
||||||
|
if (nb_stacks + 1 > _G.tinfo->conf->nb_stacks) {
|
||||||
|
_G.tinfo->conf->nb_stacks = nb_stacks + 1;
|
||||||
|
e_config_save_queue();
|
||||||
|
}
|
||||||
|
if (check_moving_anims)
|
||||||
|
_check_moving_anims(bd, extra, 0);
|
||||||
|
ecore_x_pointer_warp(_G.tinfo->desk->zone->container->win,
|
||||||
|
extra->expected.x + extra->expected.w/2,
|
||||||
|
extra->expected.y + extra->expected.h/2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EINA_LIST_REMOVE(_G.tinfo->stacks[stack], bd);
|
EINA_LIST_REMOVE(_G.tinfo->stacks[stack], bd);
|
||||||
|
@ -2380,11 +2505,8 @@ _move_up_rows(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
|
|
||||||
if (!_G.tinfo->stacks[stack]) {
|
if (!_G.tinfo->stacks[stack]) {
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
int nb_stacks;
|
|
||||||
|
|
||||||
/* Remove stack */
|
/* Remove stack */
|
||||||
nb_stacks = get_stack_count();
|
|
||||||
|
|
||||||
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
e_zone_useful_geometry_get(bd->zone, &x, &y, &w, &h);
|
||||||
|
|
||||||
for (i = stack; i < nb_stacks; i++) {
|
for (i = stack; i < nb_stacks; i++) {
|
||||||
|
@ -2392,9 +2514,9 @@ _move_up_rows(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
}
|
}
|
||||||
_G.tinfo->stacks[nb_stacks] = NULL;
|
_G.tinfo->stacks[nb_stacks] = NULL;
|
||||||
for (i = 0; i < nb_stacks; i++) {
|
for (i = 0; i < nb_stacks; i++) {
|
||||||
int height = 0;
|
int height;
|
||||||
|
|
||||||
height = h / (nb_stacks - i);
|
height = h / (nb_stacks - 1 - i);
|
||||||
|
|
||||||
_set_stack_geometry(i, y, height);
|
_set_stack_geometry(i, y, height);
|
||||||
|
|
||||||
|
@ -2407,12 +2529,6 @@ _move_up_rows(E_Border *bd, Eina_Bool check_moving_anims)
|
||||||
_reorganize_stack(stack - 1);
|
_reorganize_stack(stack - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
extra = eina_hash_find(_G.border_extras, &bd);
|
|
||||||
if (!extra) {
|
|
||||||
ERR("No extra for %p", bd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (check_moving_anims)
|
if (check_moving_anims)
|
||||||
_check_moving_anims(bd, extra, stack - 1);
|
_check_moving_anims(bd, extra, stack - 1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue