Only regenerate the border if it really changes.

SVN revision: 24026
This commit is contained in:
sebastid 2006-07-18 13:35:08 +00:00 committed by sebastid
parent 18d71529e0
commit e02e8432d0
4 changed files with 131 additions and 155 deletions

View File

@ -641,11 +641,6 @@ ACT_FN_GO(window_borderless_toggle)
E_Border *bd; E_Border *bd;
bd = (E_Border *)obj; bd = (E_Border *)obj;
if ((bd->client.border.name))
{
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
}
if (bd->borderless) if (bd->borderless)
bd->borderless = 0; bd->borderless = 0;
else else

View File

@ -1962,10 +1962,8 @@ e_border_fullscreen(E_Border *bd, E_Fullscreen policy)
e_hints_window_fullscreen_set(bd, 1); e_hints_window_fullscreen_set(bd, 1);
e_hints_window_size_unset(bd); e_hints_window_size_unset(bd);
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
bd->client.border.changed = 1; bd->client.border.changed = 1;
bd->changed = 1;
} }
} }
@ -1996,10 +1994,8 @@ e_border_unfullscreen(E_Border *bd)
e_border_layer_set(bd, 100); e_border_layer_set(bd, 100);
e_hints_window_fullscreen_set(bd, 0); e_hints_window_fullscreen_set(bd, 0);
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
bd->client.border.changed = 1; bd->client.border.changed = 1;
bd->changed = 1;
} }
} }
@ -4727,8 +4723,6 @@ _e_border_eval(E_Border *bd)
e_hints_window_type_get(bd); e_hints_window_type_get(bd);
if ((!bd->lock_border) || (!bd->client.border.name)) if ((!bd->lock_border) || (!bd->client.border.name))
{ {
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
bd->client.border.changed = 1; bd->client.border.changed = 1;
} }
if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK) if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
@ -5063,9 +5057,6 @@ _e_border_eval(E_Border *bd)
{ {
if ((!bd->lock_border) || (!bd->client.border.name)) if ((!bd->lock_border) || (!bd->client.border.name))
{ {
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
bd->client.border.changed = 1; bd->client.border.changed = 1;
} }
} }
@ -5078,9 +5069,6 @@ _e_border_eval(E_Border *bd)
if (((!bd->lock_border) || (!bd->client.border.name)) && if (((!bd->lock_border) || (!bd->client.border.name)) &&
(!(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_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;
bd->client.border.changed = 1; bd->client.border.changed = 1;
} }
if (bd->parent) if (bd->parent)
@ -5129,9 +5117,6 @@ _e_border_eval(E_Border *bd)
if ((!bd->lock_border) || (!bd->client.border.name)) if ((!bd->lock_border) || (!bd->client.border.name))
{ {
if (bd->client.border.name)
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
bd->client.border.changed = 1; bd->client.border.changed = 1;
} }
if (!bd->remember) if (!bd->remember)
@ -5202,8 +5187,6 @@ _e_border_eval(E_Border *bd)
{ {
if (rem->prop.border) if (rem->prop.border)
{ {
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
if (bd->bordername) evas_stringshare_del(bd->bordername); if (bd->bordername) evas_stringshare_del(bd->bordername);
bd->bordername = evas_stringshare_add(rem->prop.border); bd->bordername = evas_stringshare_add(rem->prop.border);
bd->client.border.changed = 1; bd->client.border.changed = 1;
@ -5258,44 +5241,48 @@ _e_border_eval(E_Border *bd)
{ {
Evas_Object *o; Evas_Object *o;
char buf[4096]; char buf[4096];
const char *bordername;
Evas_Coord cx, cy, cw, ch; Evas_Coord cx, cy, cw, ch;
int l, r, t, b; int l, r, t, b;
int ok; int ok;
if (!bd->client.border.name)
{
if (bd->fullscreen) if (bd->fullscreen)
bd->client.border.name = evas_stringshare_add("borderless"); bordername = "borderless";
else if (bd->bordername) else if (bd->bordername)
bd->client.border.name = evas_stringshare_add(bd->bordername); bordername = bd->bordername;
else if ((bd->client.mwm.borderless) || (bd->borderless)) else if ((bd->client.mwm.borderless) || (bd->borderless))
bd->client.border.name = evas_stringshare_add("borderless"); bordername = "borderless";
else if (((bd->client.icccm.transient_for != 0) || else if (((bd->client.icccm.transient_for != 0) ||
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) && (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) &&
(bd->client.icccm.min_w == bd->client.icccm.max_w) && (bd->client.icccm.min_w == bd->client.icccm.max_w) &&
(bd->client.icccm.min_h == bd->client.icccm.max_h)) (bd->client.icccm.min_h == bd->client.icccm.max_h))
bd->client.border.name = evas_stringshare_add("noresize_dialog"); bordername = "noresize_dialog";
else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) && else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
(bd->client.icccm.min_h == bd->client.icccm.max_h)) (bd->client.icccm.min_h == bd->client.icccm.max_h))
bd->client.border.name = evas_stringshare_add("noresize"); bordername = "noresize";
else if (bd->client.shaped) else if (bd->client.shaped)
bd->client.border.name = evas_stringshare_add("shaped"); bordername = "shaped";
else if ((!bd->client.icccm.accepts_focus) && else if ((!bd->client.icccm.accepts_focus) &&
(!bd->client.icccm.take_focus)) (!bd->client.icccm.take_focus))
bd->client.border.name = evas_stringshare_add("nofocus"); bordername = "nofocus";
else if (bd->client.icccm.urgent) else if (bd->client.icccm.urgent)
bd->client.border.name = evas_stringshare_add("urgent"); bordername = "urgent";
else if ((bd->client.icccm.transient_for != 0) || else if ((bd->client.icccm.transient_for != 0) ||
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))
bd->client.border.name = evas_stringshare_add("dialog"); bordername = "dialog";
else if (bd->client.netwm.state.modal) else if (bd->client.netwm.state.modal)
bd->client.border.name = evas_stringshare_add("modal"); bordername = "modal";
else if ((bd->client.netwm.state.skip_taskbar) || else if ((bd->client.netwm.state.skip_taskbar) ||
(bd->client.netwm.state.skip_pager)) (bd->client.netwm.state.skip_pager))
bd->client.border.name = evas_stringshare_add("skipped"); bordername = "skipped";
else else
bd->client.border.name = evas_stringshare_add("default"); bordername = "default";
}
if ((!bd->client.border.name) || (strcmp(bd->client.border.name, bordername)))
{
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
bd->client.border.name = evas_stringshare_add(bordername);
if (bd->bg_object) if (bd->bg_object)
{ {
bd->w -= (bd->client_inset.l + bd->client_inset.r); bd->w -= (bd->client_inset.l + bd->client_inset.r);
@ -5406,6 +5393,7 @@ _e_border_eval(E_Border *bd)
evas_object_resize(bd->bg_object, bd->w, bd->h); evas_object_resize(bd->bg_object, bd->w, bd->h);
evas_object_show(bd->bg_object); evas_object_show(bd->bg_object);
} }
}
bd->client.border.changed = 0; bd->client.border.changed = 0;
if (bd->icon_object) if (bd->icon_object)

View File

@ -115,8 +115,6 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
} }
if ((!cfdata->border->lock_border) && (!cfdata->border->shaded)) if ((!cfdata->border->lock_border) && (!cfdata->border->shaded))
{ {
if (cfdata->border->client.border.name) evas_stringshare_del(cfdata->border->client.border.name);
cfdata->border->client.border.name = NULL;
if (cfdata->border->bordername) evas_stringshare_del(cfdata->border->bordername); if (cfdata->border->bordername) evas_stringshare_del(cfdata->border->bordername);
cfdata->border->bordername = evas_stringshare_add(cfdata->bordername); cfdata->border->bordername = evas_stringshare_add(cfdata->bordername);
cfdata->border->client.border.changed = 1; cfdata->border->client.border.changed = 1;

View File

@ -653,11 +653,6 @@ _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi)
if (!bd->lock_border) if (!bd->lock_border)
{ {
toggle = e_menu_item_toggle_get(mi); toggle = e_menu_item_toggle_get(mi);
if (bd->client.border.name)
{
evas_stringshare_del(bd->client.border.name);
bd->client.border.name = NULL;
}
if (toggle) if (toggle)
bd->borderless = 1; bd->borderless = 1;
else else