forked from enlightenment/enlightenment
Only regenerate the border if it really changes.
SVN revision: 24026
This commit is contained in:
parent
18d71529e0
commit
e02e8432d0
|
@ -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
|
||||||
|
|
|
@ -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,76 +5241,89 @@ _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)
|
||||||
|
bordername = "borderless";
|
||||||
|
else if (bd->bordername)
|
||||||
|
bordername = bd->bordername;
|
||||||
|
else if ((bd->client.mwm.borderless) || (bd->borderless))
|
||||||
|
bordername = "borderless";
|
||||||
|
else if (((bd->client.icccm.transient_for != 0) ||
|
||||||
|
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) &&
|
||||||
|
(bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||||
|
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
||||||
|
bordername = "noresize_dialog";
|
||||||
|
else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||||
|
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
||||||
|
bordername = "noresize";
|
||||||
|
else if (bd->client.shaped)
|
||||||
|
bordername = "shaped";
|
||||||
|
else if ((!bd->client.icccm.accepts_focus) &&
|
||||||
|
(!bd->client.icccm.take_focus))
|
||||||
|
bordername = "nofocus";
|
||||||
|
else if (bd->client.icccm.urgent)
|
||||||
|
bordername = "urgent";
|
||||||
|
else if ((bd->client.icccm.transient_for != 0) ||
|
||||||
|
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))
|
||||||
|
bordername = "dialog";
|
||||||
|
else if (bd->client.netwm.state.modal)
|
||||||
|
bordername = "modal";
|
||||||
|
else if ((bd->client.netwm.state.skip_taskbar) ||
|
||||||
|
(bd->client.netwm.state.skip_pager))
|
||||||
|
bordername = "skipped";
|
||||||
|
else
|
||||||
|
bordername = "default";
|
||||||
|
|
||||||
|
if ((!bd->client.border.name) || (strcmp(bd->client.border.name, bordername)))
|
||||||
{
|
{
|
||||||
if (bd->fullscreen)
|
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
|
||||||
bd->client.border.name = evas_stringshare_add("borderless");
|
bd->client.border.name = evas_stringshare_add(bordername);
|
||||||
else if (bd->bordername)
|
|
||||||
bd->client.border.name = evas_stringshare_add(bd->bordername);
|
if (bd->bg_object)
|
||||||
else if ((bd->client.mwm.borderless) || (bd->borderless))
|
|
||||||
bd->client.border.name = evas_stringshare_add("borderless");
|
|
||||||
else if (((bd->client.icccm.transient_for != 0) ||
|
|
||||||
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) &&
|
|
||||||
(bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
|
||||||
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
|
||||||
bd->client.border.name = evas_stringshare_add("noresize_dialog");
|
|
||||||
else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
|
||||||
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
|
||||||
bd->client.border.name = evas_stringshare_add("noresize");
|
|
||||||
else if (bd->client.shaped)
|
|
||||||
bd->client.border.name = evas_stringshare_add("shaped");
|
|
||||||
else if ((!bd->client.icccm.accepts_focus) &&
|
|
||||||
(!bd->client.icccm.take_focus))
|
|
||||||
bd->client.border.name = evas_stringshare_add("nofocus");
|
|
||||||
else if (bd->client.icccm.urgent)
|
|
||||||
bd->client.border.name = evas_stringshare_add("urgent");
|
|
||||||
else if ((bd->client.icccm.transient_for != 0) ||
|
|
||||||
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))
|
|
||||||
bd->client.border.name = evas_stringshare_add("dialog");
|
|
||||||
else if (bd->client.netwm.state.modal)
|
|
||||||
bd->client.border.name = evas_stringshare_add("modal");
|
|
||||||
else if ((bd->client.netwm.state.skip_taskbar) ||
|
|
||||||
(bd->client.netwm.state.skip_pager))
|
|
||||||
bd->client.border.name = evas_stringshare_add("skipped");
|
|
||||||
else
|
|
||||||
bd->client.border.name = evas_stringshare_add("default");
|
|
||||||
}
|
|
||||||
if (bd->bg_object)
|
|
||||||
{
|
|
||||||
bd->w -= (bd->client_inset.l + bd->client_inset.r);
|
|
||||||
bd->h -= (bd->client_inset.t + bd->client_inset.b);
|
|
||||||
bd->client_inset.l = 0;
|
|
||||||
bd->client_inset.r = 0;
|
|
||||||
bd->client_inset.t = 0;
|
|
||||||
bd->client_inset.b = 0;
|
|
||||||
bd->changes.size = 1;
|
|
||||||
evas_object_del(bd->bg_object);
|
|
||||||
}
|
|
||||||
o = edje_object_add(bd->bg_evas);
|
|
||||||
snprintf(buf, sizeof(buf), "widgets/border/%s/border",
|
|
||||||
bd->client.border.name);
|
|
||||||
ok = e_theme_edje_object_set(o, "base/theme/borders", buf);
|
|
||||||
if ((!ok) && (strcmp(bd->client.border.name, "borderless")))
|
|
||||||
ok = e_theme_edje_object_set(o, "base/theme/borders",
|
|
||||||
"widgets/border/default/border");
|
|
||||||
if (ok)
|
|
||||||
{
|
|
||||||
const char *shape_option;
|
|
||||||
|
|
||||||
bd->bg_object = o;
|
|
||||||
shape_option = edje_object_data_get(o, "shaped");
|
|
||||||
if (shape_option)
|
|
||||||
{
|
{
|
||||||
if (!strcmp(shape_option, "1"))
|
bd->w -= (bd->client_inset.l + bd->client_inset.r);
|
||||||
|
bd->h -= (bd->client_inset.t + bd->client_inset.b);
|
||||||
|
bd->client_inset.l = 0;
|
||||||
|
bd->client_inset.r = 0;
|
||||||
|
bd->client_inset.t = 0;
|
||||||
|
bd->client_inset.b = 0;
|
||||||
|
bd->changes.size = 1;
|
||||||
|
evas_object_del(bd->bg_object);
|
||||||
|
}
|
||||||
|
o = edje_object_add(bd->bg_evas);
|
||||||
|
snprintf(buf, sizeof(buf), "widgets/border/%s/border",
|
||||||
|
bd->client.border.name);
|
||||||
|
ok = e_theme_edje_object_set(o, "base/theme/borders", buf);
|
||||||
|
if ((!ok) && (strcmp(bd->client.border.name, "borderless")))
|
||||||
|
ok = e_theme_edje_object_set(o, "base/theme/borders",
|
||||||
|
"widgets/border/default/border");
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
const char *shape_option;
|
||||||
|
|
||||||
|
bd->bg_object = o;
|
||||||
|
shape_option = edje_object_data_get(o, "shaped");
|
||||||
|
if (shape_option)
|
||||||
{
|
{
|
||||||
if (!bd->shaped)
|
if (!strcmp(shape_option, "1"))
|
||||||
{
|
{
|
||||||
bd->shaped = 1;
|
if (!bd->shaped)
|
||||||
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
{
|
||||||
|
bd->shaped = 1;
|
||||||
|
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (bd->shaped)
|
||||||
|
{
|
||||||
|
bd->shaped = 0;
|
||||||
|
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -5338,73 +5334,65 @@ _e_border_eval(E_Border *bd)
|
||||||
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bd->client.netwm.name)
|
||||||
|
edje_object_part_text_set(o, "title_text",
|
||||||
|
bd->client.netwm.name);
|
||||||
|
else if (bd->client.icccm.title)
|
||||||
|
edje_object_part_text_set(o, "title_text",
|
||||||
|
bd->client.icccm.title);
|
||||||
|
evas_object_resize(o, 1000, 1000);
|
||||||
|
edje_object_calc_force(o);
|
||||||
|
edje_object_part_geometry_get(o, "client", &cx, &cy, &cw, &ch);
|
||||||
|
l = cx;
|
||||||
|
r = 1000 - (cx + cw);
|
||||||
|
t = cy;
|
||||||
|
b = 1000 - (cy + ch);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bd->shaped)
|
evas_object_del(o);
|
||||||
{
|
bd->bg_object = NULL;
|
||||||
bd->shaped = 0;
|
l = 0;
|
||||||
ecore_evas_shaped_set(bd->bg_ecore_evas, bd->shaped);
|
r = 0;
|
||||||
}
|
t = 0;
|
||||||
|
b = 0;
|
||||||
}
|
}
|
||||||
|
bd->client_inset.l = l;
|
||||||
if (bd->client.netwm.name)
|
bd->client_inset.r = r;
|
||||||
edje_object_part_text_set(o, "title_text",
|
bd->client_inset.t = t;
|
||||||
bd->client.netwm.name);
|
bd->client_inset.b = b;
|
||||||
else if (bd->client.icccm.title)
|
ecore_x_netwm_frame_size_set(bd->client.win, l, r, t, b);
|
||||||
edje_object_part_text_set(o, "title_text",
|
ecore_x_e_frame_size_set(bd->client.win, l, r, t, b);
|
||||||
bd->client.icccm.title);
|
bd->w += (bd->client_inset.l + bd->client_inset.r);
|
||||||
evas_object_resize(o, 1000, 1000);
|
bd->h += (bd->client_inset.t + bd->client_inset.b);
|
||||||
edje_object_calc_force(o);
|
bd->changes.size = 1;
|
||||||
edje_object_part_geometry_get(o, "client", &cx, &cy, &cw, &ch);
|
ecore_x_window_move(bd->client.shell_win, l, t);
|
||||||
l = cx;
|
if (bd->bg_object)
|
||||||
r = 1000 - (cx + cw);
|
|
||||||
t = cy;
|
|
||||||
b = 1000 - (cy + ch);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
evas_object_del(o);
|
|
||||||
bd->bg_object = NULL;
|
|
||||||
l = 0;
|
|
||||||
r = 0;
|
|
||||||
t = 0;
|
|
||||||
b = 0;
|
|
||||||
}
|
|
||||||
bd->client_inset.l = l;
|
|
||||||
bd->client_inset.r = r;
|
|
||||||
bd->client_inset.t = t;
|
|
||||||
bd->client_inset.b = b;
|
|
||||||
ecore_x_netwm_frame_size_set(bd->client.win, l, r, t, b);
|
|
||||||
ecore_x_e_frame_size_set(bd->client.win, l, r, t, b);
|
|
||||||
bd->w += (bd->client_inset.l + bd->client_inset.r);
|
|
||||||
bd->h += (bd->client_inset.t + bd->client_inset.b);
|
|
||||||
bd->changes.size = 1;
|
|
||||||
ecore_x_window_move(bd->client.shell_win, l, t);
|
|
||||||
if (bd->bg_object)
|
|
||||||
{
|
|
||||||
edje_object_signal_callback_add(bd->bg_object, "*", "*",
|
|
||||||
_e_border_cb_signal_bind, bd);
|
|
||||||
if (bd->focused)
|
|
||||||
{
|
{
|
||||||
edje_object_signal_emit(bd->bg_object, "active", "");
|
edje_object_signal_callback_add(bd->bg_object, "*", "*",
|
||||||
if (bd->icon_object)
|
_e_border_cb_signal_bind, bd);
|
||||||
edje_object_signal_emit(bd->icon_object, "active", "");
|
if (bd->focused)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(bd->bg_object, "active", "");
|
||||||
|
if (bd->icon_object)
|
||||||
|
edje_object_signal_emit(bd->icon_object, "active", "");
|
||||||
|
}
|
||||||
|
if (bd->shaded)
|
||||||
|
edje_object_signal_emit(bd->bg_object, "shaded", "");
|
||||||
|
if ((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN)
|
||||||
|
edje_object_signal_emit(bd->bg_object, "maximize,fullscreen", "");
|
||||||
|
else if ((bd->maximized & E_MAXIMIZE_TYPE) != E_MAXIMIZE_NONE)
|
||||||
|
edje_object_signal_emit(bd->bg_object, "maximize", "");
|
||||||
|
if (bd->hung)
|
||||||
|
edje_object_signal_emit(bd->bg_object, "hung", "");
|
||||||
|
if (bd->client.icccm.urgent)
|
||||||
|
edje_object_signal_emit(bd->bg_object, "urgent", "");
|
||||||
|
|
||||||
|
evas_object_move(bd->bg_object, 0, 0);
|
||||||
|
evas_object_resize(bd->bg_object, bd->w, bd->h);
|
||||||
|
evas_object_show(bd->bg_object);
|
||||||
}
|
}
|
||||||
if (bd->shaded)
|
|
||||||
edje_object_signal_emit(bd->bg_object, "shaded", "");
|
|
||||||
if ((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN)
|
|
||||||
edje_object_signal_emit(bd->bg_object, "maximize,fullscreen", "");
|
|
||||||
else if ((bd->maximized & E_MAXIMIZE_TYPE) != E_MAXIMIZE_NONE)
|
|
||||||
edje_object_signal_emit(bd->bg_object, "maximize", "");
|
|
||||||
if (bd->hung)
|
|
||||||
edje_object_signal_emit(bd->bg_object, "hung", "");
|
|
||||||
if (bd->client.icccm.urgent)
|
|
||||||
edje_object_signal_emit(bd->bg_object, "urgent", "");
|
|
||||||
|
|
||||||
evas_object_move(bd->bg_object, 0, 0);
|
|
||||||
evas_object_resize(bd->bg_object, bd->w, bd->h);
|
|
||||||
evas_object_show(bd->bg_object);
|
|
||||||
}
|
}
|
||||||
bd->client.border.changed = 0;
|
bd->client.border.changed = 0;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue