fix border bugs on fullscreen and maximize fullscreen actions

SVN revision: 23498
This commit is contained in:
Carsten Haitzler 2006-06-19 15:16:37 +00:00
parent 0a058bfdb3
commit 642ac622ea
1 changed files with 24 additions and 4 deletions

View File

@ -757,7 +757,7 @@ e_border_move(E_Border *bd, int x, int y)
if ((bd->fullscreen) ||
(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)))
return;
return;
if (bd->new_client)
{
E_Border_Pending_Move_Resize *pnd;
@ -1680,6 +1680,11 @@ e_border_maximize(E_Border *bd, E_Maximize max)
bd->client_inset.r = 1000 - (cx + cw);
bd->client_inset.t = cy;
bd->client_inset.b = 1000 - (cy + ch);
printf("SET inset %i %i %i %i\n",
bd->client_inset.l,
bd->client_inset.r,
bd->client_inset.t,
bd->client_inset.b);
ecore_x_netwm_frame_size_set(bd->client.win,
bd->client_inset.l, bd->client_inset.r,
bd->client_inset.t, bd->client_inset.b);
@ -1690,7 +1695,7 @@ e_border_maximize(E_Border *bd, E_Maximize max)
w = bd->zone->w;
h = bd->zone->h;
/* center x-direction */
e_border_resize_limit(bd, &w, &h);
// e_border_resize_limit(bd, &w, &h);
x1 = bd->zone->x + (bd->zone->w - w) / 2;
/* center y-direction */
y1 = bd->zone->y + (bd->zone->h - h) / 2;
@ -1803,6 +1808,7 @@ e_border_unmaximize(E_Border *bd, E_Maximize max)
evas_object_resize(bd->bg_object, 1000, 1000);
edje_object_calc_force(bd->bg_object);
edje_object_part_geometry_get(bd->bg_object, "client", &cx, &cy, &cw, &ch);
printf("SET inset 2\n");
bd->client_inset.l = cx;
bd->client_inset.r = 1000 - (cx + cw);
bd->client_inset.t = cy;
@ -1907,6 +1913,7 @@ e_border_fullscreen(E_Border *bd, E_Fullscreen policy)
bd->client_inset.sr = bd->client_inset.r;
bd->client_inset.st = bd->client_inset.t;
bd->client_inset.sb = bd->client_inset.b;
printf("SET inset 3 (going fullscreen)\n");
bd->client_inset.l = 0;
bd->client_inset.r = 0;
bd->client_inset.t = 0;
@ -1995,6 +2002,7 @@ e_border_unfullscreen(E_Border *bd)
// printf("UNFULLSCREEEN!\n");
bd->fullscreen = 0;
bd->need_fullscreen = 0;
printf("SET inset 4 (unfullscreen)\n");
bd->client_inset.l = bd->client_inset.sl;
bd->client_inset.r = bd->client_inset.sr;
bd->client_inset.t = bd->client_inset.st;
@ -2655,6 +2663,7 @@ e_border_frame_recalc(E_Border *bd)
evas_object_resize(bd->bg_object, 1000, 1000);
edje_object_calc_force(bd->bg_object);
edje_object_part_geometry_get(bd->bg_object, "client", &cx, &cy, &cw, &ch);
printf("SET inset 5\n");
bd->client_inset.l = cx;
bd->client_inset.r = 1000 - (cx + cw);
bd->client_inset.t = cy;
@ -4729,6 +4738,7 @@ _e_border_eval(E_Border *bd)
{
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
printf("bd change 1\n");
bd->client.border.changed = 1;
}
if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
@ -5066,6 +5076,7 @@ _e_border_eval(E_Border *bd)
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
printf("bd change 2\n");
bd->client.border.changed = 1;
}
}
@ -5075,11 +5086,14 @@ _e_border_eval(E_Border *bd)
{
e_hints_window_state_set(bd);
/* Some stats might change the border, like modal */
if ((!bd->lock_border) || (!bd->client.border.name))
if (((!bd->lock_border) || (!bd->client.border.name)) &&
(!bd->fullscreen) &&
(!(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
{
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
printf("bd change 3\n");
bd->client.border.changed = 1;
}
if (bd->parent)
@ -5131,6 +5145,7 @@ _e_border_eval(E_Border *bd)
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
printf("bd change 4\n");
bd->client.border.changed = 1;
}
if (!bd->remember)
@ -5203,6 +5218,7 @@ _e_border_eval(E_Border *bd)
bd->client.border.name = NULL;
if (rem->prop.border)
bd->client.border.name = evas_stringshare_add(rem->prop.border);
printf("bd change 5\n");
bd->client.border.changed = 1;
}
if (rem->apply & E_REMEMBER_APPLY_STICKY)
@ -5249,7 +5265,8 @@ _e_border_eval(E_Border *bd)
}
}
if ((bd->client.border.changed) && (!bd->shaded))
if ((bd->client.border.changed) && (!bd->shaded) && (!bd->fullscreen) &&
(!(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
{
Evas_Object *o;
char buf[4096];
@ -5257,6 +5274,7 @@ _e_border_eval(E_Border *bd)
int l, r, t, b;
int ok;
printf("bd changed!\n");
if (!bd->client.border.name)
{
if ((bd->client.mwm.borderless) || (bd->borderless))
@ -5291,6 +5309,7 @@ _e_border_eval(E_Border *bd)
{
bd->w -= (bd->client_inset.l + bd->client_inset.r);
bd->h -= (bd->client_inset.t + bd->client_inset.b);
printf("SET inset 6\n");
bd->client_inset.l = 0;
bd->client_inset.r = 0;
bd->client_inset.t = 0;
@ -5362,6 +5381,7 @@ _e_border_eval(E_Border *bd)
t = 0;
b = 0;
}
printf("SET inset 7\n");
bd->client_inset.l = l;
bd->client_inset.r = r;
bd->client_inset.t = t;