Fix gqview segv. The border wasn't removed from the containers client list.

SVN revision: 14851
This commit is contained in:
sebastid 2005-05-19 04:38:32 +00:00 committed by sebastid
parent b62b86a6f7
commit ca23bfa67a
3 changed files with 49 additions and 42 deletions

View File

@ -2924,7 +2924,6 @@ _e_border_eval(E_Border *bd)
evas_object_del(bd->bg_object);
}
o = edje_object_add(bd->bg_evas);
bd->bg_object = o;
snprintf(buf, sizeof(buf), "widgets/border/%s/border",
bd->client.border.name);
ok = e_theme_edje_object_set(o, "base/theme/borders", buf);
@ -2932,6 +2931,7 @@ _e_border_eval(E_Border *bd)
{
const char *shape_option;
bd->bg_object = o;
shape_option = edje_object_data_get(o, "shaped");
if (shape_option)
{
@ -2975,6 +2975,8 @@ _e_border_eval(E_Border *bd)
}
else
{
evas_object_del(o);
bd->bg_object = NULL;
l = 0;
r = 0;
t = 0;
@ -2990,37 +2992,40 @@ _e_border_eval(E_Border *bd)
bd->h += (bd->client_inset.t + bd->client_inset.b);
bd->changes.size = 1;
ecore_x_window_move(bd->client.shell_win, l, t);
edje_object_signal_callback_add(o, "move_start", "*",
_e_border_cb_signal_move_start, bd);
edje_object_signal_callback_add(o, "move_stop", "*",
_e_border_cb_signal_move_stop, bd);
edje_object_signal_callback_add(o, "resize_tl_start", "*",
_e_border_cb_signal_resize_tl_start, bd);
edje_object_signal_callback_add(o, "resize_t_start", "*",
_e_border_cb_signal_resize_t_start, bd);
edje_object_signal_callback_add(o, "resize_tr_start", "*",
_e_border_cb_signal_resize_tr_start, bd);
edje_object_signal_callback_add(o, "resize_r_start", "*",
_e_border_cb_signal_resize_r_start, bd);
edje_object_signal_callback_add(o, "resize_br_start", "*",
_e_border_cb_signal_resize_br_start, bd);
edje_object_signal_callback_add(o, "resize_b_start", "*",
_e_border_cb_signal_resize_b_start, bd);
edje_object_signal_callback_add(o, "resize_bl_start", "*",
_e_border_cb_signal_resize_bl_start, bd);
edje_object_signal_callback_add(o, "resize_l_start", "*",
_e_border_cb_signal_resize_l_start, bd);
edje_object_signal_callback_add(o, "resize_stop", "*",
_e_border_cb_signal_resize_stop, bd);
edje_object_signal_callback_add(o, "action", "*",
_e_border_cb_signal_action, bd);
edje_object_signal_callback_add(o, "drag", "*",
_e_border_cb_signal_drag, bd);
if (bd->focused)
edje_object_signal_emit(bd->bg_object, "active", "");
evas_object_move(o, 0, 0);
evas_object_resize(o, bd->w, bd->h);
evas_object_show(o);
if (bd->bg_object)
{
edje_object_signal_callback_add(bd->bg_object, "move_start", "*",
_e_border_cb_signal_move_start, bd);
edje_object_signal_callback_add(bd->bg_object, "move_stop", "*",
_e_border_cb_signal_move_stop, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_tl_start", "*",
_e_border_cb_signal_resize_tl_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_t_start", "*",
_e_border_cb_signal_resize_t_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_tr_start", "*",
_e_border_cb_signal_resize_tr_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_r_start", "*",
_e_border_cb_signal_resize_r_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_br_start", "*",
_e_border_cb_signal_resize_br_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_b_start", "*",
_e_border_cb_signal_resize_b_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_bl_start", "*",
_e_border_cb_signal_resize_bl_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_l_start", "*",
_e_border_cb_signal_resize_l_start, bd);
edje_object_signal_callback_add(bd->bg_object, "resize_stop", "*",
_e_border_cb_signal_resize_stop, bd);
edje_object_signal_callback_add(bd->bg_object, "action", "*",
_e_border_cb_signal_action, bd);
edje_object_signal_callback_add(bd->bg_object, "drag", "*",
_e_border_cb_signal_drag, bd);
if (bd->focused)
edje_object_signal_emit(bd->bg_object, "active", "");
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;
if (bd->icon_object)

View File

@ -549,17 +549,13 @@ e_container_border_add(E_Border *bd)
void
e_container_border_remove(E_Border *bd)
{
int pos;
int i;
if (bd->layer == 0) pos = 0;
else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
else pos = 5;
bd->zone->container->layers[pos].clients =
evas_list_remove(bd->zone->container->layers[pos].clients, bd);
for (i = 0; i < 7; i++)
{
bd->zone->container->layers[i].clients =
evas_list_remove(bd->zone->container->layers[i].clients, bd);
}
}
void

View File

@ -92,6 +92,10 @@ e_manager_new(Ecore_X_Window root)
if (h) man->handlers = evas_list_append(man->handlers, h);
h = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _e_manager_cb_key_down, man);
if (h) man->handlers = evas_list_append(man->handlers, h);
/* setup hints */
e_hints_manager_init(man);
return man;
}
@ -273,6 +277,8 @@ e_manager_resize(E_Manager *man, int w, int h)
con = l->data;
e_container_resize(con, man->w, man->h);
}
ecore_x_netwm_desk_size_set(man->root, man->w, man->h);
}
void