aaaah much smoother opaque resiz.e. we're all happy now :)

SVN revision: 4460
This commit is contained in:
Carsten Haitzler 2001-03-27 19:02:37 +00:00
parent 3afd37d998
commit d2316ad2f6
2 changed files with 181 additions and 74 deletions

View File

@ -561,20 +561,29 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int
if (!b) b = e_border_current_focused(); if (!b) b = e_border_current_focused();
if (!b) return; if (!b) return;
if (b->current.shaded != 0) return; if (b->current.shaded != 0) return;
/* 0 | 1 */ e_window_gravity_set(b->win.client, StaticGravity);
e_window_gravity_set(b->win.l, NorthWestGravity);
e_window_gravity_set(b->win.r, SouthEastGravity);
e_window_gravity_set(b->win.t, NorthWestGravity);
e_window_gravity_set(b->win.b, SouthEastGravity);
e_window_gravity_set(b->win.input, NorthWestGravity);
e_window_gravity_set(b->win.container, NorthWestGravity);
/* 1 | 2 */
/* --+-- */ /* --+-- */
/* 2 | 3 */ /* 3 | 4 */
if (x > (b->current.w / 2)) if (x > (b->current.w / 2))
{ {
if (y > (b->current.h / 2)) if (y > (b->current.h / 2))
{ {
b->mode.resize = 4; b->mode.resize = 4;
SET_BORDER_GRAVITY(b, NorthWestGravity); /* SET_BORDER_GRAVITY(b, NorthWestGravity);*/
/* e_window_gravity_set(b->win.container, SouthEastGravity);*/
} }
else else
{ {
b->mode.resize = 2; b->mode.resize = 2;
SET_BORDER_GRAVITY(b, SouthWestGravity); /* SET_BORDER_GRAVITY(b, SouthWestGravity);*/
/* e_window_gravity_set(b->win.container, NorthEastGravity);*/
} }
} }
else else
@ -582,12 +591,14 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int
if (y > (b->current.h / 2)) if (y > (b->current.h / 2))
{ {
b->mode.resize = 3; b->mode.resize = 3;
SET_BORDER_GRAVITY(b, NorthEastGravity); /* SET_BORDER_GRAVITY(b, NorthEastGravity);*/
/* e_window_gravity_set(b->win.container, SouthWestGravity);*/
} }
else else
{ {
b->mode.resize = 1; b->mode.resize = 1;
SET_BORDER_GRAVITY(b, SouthEastGravity); /* SET_BORDER_GRAVITY(b, SouthEastGravity);*/
/* e_window_gravity_set(b->win.container, NorthWestGravity); */
} }
} }
return; return;
@ -613,6 +624,8 @@ e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int
b->mode.resize = 0; b->mode.resize = 0;
b->changed = 1; b->changed = 1;
e_border_adjust_limits(b); e_border_adjust_limits(b);
e_window_gravity_set(b->win.client, NorthWestGravity);
SET_BORDER_GRAVITY(b, NorthWestGravity);
return; return;
UN(a); UN(a);
UN(data); UN(data);
@ -676,16 +689,23 @@ e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, in
if (!b) b = e_border_current_focused(); if (!b) b = e_border_current_focused();
if (!b) return; if (!b) return;
if (b->current.shaded != 0) return; if (b->current.shaded != 0) return;
/* 4 | 5 */ e_window_gravity_set(b->win.client, StaticGravity);
e_window_gravity_set(b->win.l, NorthWestGravity);
e_window_gravity_set(b->win.r, SouthEastGravity);
e_window_gravity_set(b->win.t, NorthWestGravity);
e_window_gravity_set(b->win.b, SouthEastGravity);
e_window_gravity_set(b->win.input, NorthWestGravity);
e_window_gravity_set(b->win.container, NorthWestGravity);
/* 5 | 6 */
if (x > (b->current.w / 2)) if (x > (b->current.w / 2))
{ {
b->mode.resize = 6; b->mode.resize = 6;
SET_BORDER_GRAVITY(b, NorthWestGravity); /* SET_BORDER_GRAVITY(b, NorthWestGravity);*/
} }
else else
{ {
b->mode.resize = 5; b->mode.resize = 5;
SET_BORDER_GRAVITY(b, NorthEastGravity); /* SET_BORDER_GRAVITY(b, NorthEastGravity);*/
} }
return; return;
UN(a); UN(a);
@ -711,6 +731,8 @@ e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in
b->mode.resize = 0; b->mode.resize = 0;
b->changed = 1; b->changed = 1;
e_border_adjust_limits(b); e_border_adjust_limits(b);
e_window_gravity_set(b->win.client, NorthWestGravity);
SET_BORDER_GRAVITY(b, NorthWestGravity);
return; return;
UN(a); UN(a);
UN(data); UN(data);
@ -760,18 +782,25 @@ e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, in
if (!b) b = e_border_current_focused(); if (!b) b = e_border_current_focused();
if (!b) return; if (!b) return;
if (b->current.shaded != 0) return; if (b->current.shaded != 0) return;
/* 6 */ e_window_gravity_set(b->win.client, StaticGravity);
/* - */ e_window_gravity_set(b->win.l, NorthWestGravity);
e_window_gravity_set(b->win.r, SouthEastGravity);
e_window_gravity_set(b->win.t, NorthWestGravity);
e_window_gravity_set(b->win.b, SouthEastGravity);
e_window_gravity_set(b->win.input, NorthWestGravity);
e_window_gravity_set(b->win.container, NorthWestGravity);
/* 7 */ /* 7 */
/* - */
/* 8 */
if (y > (b->current.h / 2)) if (y > (b->current.h / 2))
{ {
b->mode.resize = 8; b->mode.resize = 8;
SET_BORDER_GRAVITY(b, NorthWestGravity); /* SET_BORDER_GRAVITY(b, NorthWestGravity);*/
} }
else else
{ {
b->mode.resize = 7; b->mode.resize = 7;
SET_BORDER_GRAVITY(b, SouthWestGravity); /* SET_BORDER_GRAVITY(b, SouthWestGravity);*/
} }
return; return;
UN(a); UN(a);
@ -796,6 +825,8 @@ e_act_resize_v_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in
b->current.requested.h = b->current.h; b->current.requested.h = b->current.h;
b->mode.resize = 0; b->mode.resize = 0;
e_border_adjust_limits(b); e_border_adjust_limits(b);
e_window_gravity_set(b->win.client, NorthWestGravity);
SET_BORDER_GRAVITY(b, NorthWestGravity);
b->changed = 1; b->changed = 1;
return; return;
UN(a); UN(a);

View File

@ -1347,6 +1347,10 @@ e_border_new(void)
e_window_raise(b->win.input); e_window_raise(b->win.input);
e_window_raise(b->win.container); e_window_raise(b->win.container);
e_window_raise(b->win.l);
e_window_raise(b->win.r);
e_window_raise(b->win.t);
e_window_raise(b->win.b);
evases = evas_list_append(evases, b->evas.l); evases = evas_list_append(evases, b->evas.l);
evases = evas_list_append(evases, b->evas.r); evases = evas_list_append(evases, b->evas.r);
@ -1835,71 +1839,143 @@ e_border_update(E_Border *b)
if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb); if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
e_window_move_resize(b->win.input, e_window_move_resize(b->win.input,
0, 0, b->current.w, b->current.h); 0, 0, b->current.w, b->current.h);
e_window_move_resize(b->win.main, if (smaller)
b->current.x, b->current.y,
b->current.w, b->current.h);
if (b->current.shaded == b->client.h)
{ {
e_window_move_resize(b->win.client, if (b->current.shaded == b->client.h)
0, - b->current.shaded, {
b->client.w, e_window_move_resize(b->win.client,
b->client.h); 0, - b->current.shaded,
e_window_move_resize(b->win.container, b->client.w,
b->current.w + 1, b->client.h);
b->current.h + 1, e_window_move_resize(b->win.container,
320, b->current.w + 1,
320); b->current.h + 1,
320,
320);
}
else
{
e_window_move_resize(b->win.client,
0, - b->current.shaded,
b->client.w,
b->client.h);
e_window_move_resize(b->win.container,
pl,
pt,
b->current.w - pl - pr,
b->current.h - pt - pb);
}
e_window_move_resize(b->win.main,
b->current.x, b->current.y,
b->current.w, b->current.h);
x = 0, y = pt, w = pl, h = (b->current.h - pt - pb);
if ((w <1) || (h < 1)) e_window_hide(b->win.l);
else
{
e_window_show(b->win.l);
e_window_move_resize(b->win.l, x, y, w, h);
evas_set_output_size(b->evas.l, w, h);
evas_set_output_viewport(b->evas.l, x, y, w, h);
}
x = 0, y = 0, w = b->current.w, h = pt;
if ((w <1) || (h < 1)) e_window_hide(b->win.t);
else
{
e_window_show(b->win.t);
e_window_move_resize(b->win.t, x, y, w, h);
evas_set_output_size(b->evas.t, w, h);
evas_set_output_viewport(b->evas.t, x, y, w, h);
}
x = b->current.w - pr, y = pt, w = pr, h = (b->current.h - pt - pb);
if ((w <1) || (h < 1)) e_window_hide(b->win.r);
else
{
e_window_show(b->win.r);
e_window_move_resize(b->win.r, x, y, w, h);
evas_set_output_size(b->evas.r, w, h);
evas_set_output_viewport(b->evas.r, x, y, w, h);
}
x = 0, y = b->current.h - pb, w = b->current.w, h = pb;
if ((w <1) || (h < 1)) e_window_hide(b->win.b);
else
{
e_window_show(b->win.b);
e_window_move_resize(b->win.b, x, y, w, h);
evas_set_output_size(b->evas.b, w, h);
evas_set_output_viewport(b->evas.b, x, y, w, h);
}
} }
else else
{ {
e_window_move_resize(b->win.client, e_window_move_resize(b->win.main,
0, - b->current.shaded, b->current.x, b->current.y,
b->client.w, b->current.w, b->current.h);
b->client.h); x = 0, y = pt, w = pl, h = (b->current.h - pt - pb);
e_window_move_resize(b->win.container, if ((w <1) || (h < 1)) e_window_hide(b->win.l);
pl, else
pt, {
b->current.w - pl - pr, e_window_show(b->win.l);
b->current.h - pt - pb); e_window_move_resize(b->win.l, x, y, w, h);
} evas_set_output_size(b->evas.l, w, h);
x = 0, y = pt, w = pl, h = (b->current.h - pt - pb); evas_set_output_viewport(b->evas.l, x, y, w, h);
if ((w <1) || (h < 1)) e_window_hide(b->win.l); }
else
{ x = 0, y = 0, w = b->current.w, h = pt;
e_window_show(b->win.l); if ((w <1) || (h < 1)) e_window_hide(b->win.t);
e_window_move_resize(b->win.l, x, y, w, h); else
evas_set_output_size(b->evas.l, w, h); {
evas_set_output_viewport(b->evas.l, x, y, w, h); e_window_show(b->win.t);
} e_window_move_resize(b->win.t, x, y, w, h);
evas_set_output_size(b->evas.t, w, h);
x = 0, y = 0, w = b->current.w, h = pt; evas_set_output_viewport(b->evas.t, x, y, w, h);
if ((w <1) || (h < 1)) e_window_hide(b->win.t); }
else
{ x = b->current.w - pr, y = pt, w = pr, h = (b->current.h - pt - pb);
e_window_show(b->win.t); if ((w <1) || (h < 1)) e_window_hide(b->win.r);
e_window_move_resize(b->win.t, x, y, w, h); else
evas_set_output_size(b->evas.t, w, h); {
evas_set_output_viewport(b->evas.t, x, y, w, h); e_window_show(b->win.r);
} e_window_move_resize(b->win.r, x, y, w, h);
evas_set_output_size(b->evas.r, w, h);
x = b->current.w - pr, y = pt, w = pr, h = (b->current.h - pt - pb); evas_set_output_viewport(b->evas.r, x, y, w, h);
if ((w <1) || (h < 1)) e_window_hide(b->win.r); }
else
{ x = 0, y = b->current.h - pb, w = b->current.w, h = pb;
e_window_show(b->win.r); if ((w <1) || (h < 1)) e_window_hide(b->win.b);
e_window_move_resize(b->win.r, x, y, w, h); else
evas_set_output_size(b->evas.r, w, h); {
evas_set_output_viewport(b->evas.r, x, y, w, h); e_window_show(b->win.b);
} e_window_move_resize(b->win.b, x, y, w, h);
evas_set_output_size(b->evas.b, w, h);
x = 0, y = b->current.h - pb, w = b->current.w, h = pb; evas_set_output_viewport(b->evas.b, x, y, w, h);
if ((w <1) || (h < 1)) e_window_hide(b->win.b); }
else if (b->current.shaded == b->client.h)
{ {
e_window_show(b->win.b); e_window_move_resize(b->win.container,
e_window_move_resize(b->win.b, x, y, w, h); b->current.w + 1,
evas_set_output_size(b->evas.b, w, h); b->current.h + 1,
evas_set_output_viewport(b->evas.b, x, y, w, h); 320,
320);
e_window_move_resize(b->win.client,
0, - b->current.shaded,
b->client.w,
b->client.h);
}
else
{
e_window_move_resize(b->win.container,
pl,
pt,
b->current.w - pl - pr,
b->current.h - pt - pb);
e_window_move_resize(b->win.client,
0, - b->current.shaded,
b->client.w,
b->client.h);
}
} }
if (b->bits.l) ebits_resize(b->bits.l, b->current.w, b->current.h); if (b->bits.l) ebits_resize(b->bits.l, b->current.w, b->current.h);