fix evas error debug where passing in null objects is bad.

SVN revision: 41788
This commit is contained in:
Carsten Haitzler 2009-08-15 11:32:32 +00:00
parent 70c0a52394
commit 072f4b664f
4 changed files with 62 additions and 24 deletions

View File

@ -1680,7 +1680,7 @@ _e_menu_items_layout_update(E_Menu *m)
static void
_e_menu_item_unrealize(E_Menu_Item *mi)
{
e_box_freeze(mi->container_object);
if (mi->container_object) e_box_freeze(mi->container_object);
if (mi->separator_object) evas_object_del(mi->separator_object);
mi->separator_object = NULL;
if (mi->bg_object) evas_object_del(mi->bg_object);

View File

@ -150,6 +150,7 @@ _e_smart_child_resize_hook(void *data, Evas *e, Evas_Object *obj, void *event_in
Evas_Coord w, h;
sd = data;
if (!sd->child_obj) return;
evas_object_geometry_get(sd->child_obj, NULL, NULL, &w, &h);
if ((w != sd->child_w) || (h != sd->child_h))
{
@ -163,7 +164,8 @@ _e_smart_child_resize_hook(void *data, Evas *e, Evas_Object *obj, void *event_in
static void
_e_smart_reconfigure(E_Smart_Data *sd)
{
evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
if (sd->child_obj)
evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
}
static void
@ -212,35 +214,40 @@ static void
_e_smart_show(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_show(sd->child_obj);
if (sd->child_obj)
evas_object_show(sd->child_obj);
}
static void
_e_smart_hide(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_hide(sd->child_obj);
if (sd->child_obj)
evas_object_hide(sd->child_obj);
}
static void
_e_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
{
INTERNAL_ENTRY;
evas_object_color_set(sd->child_obj, r, g, b, a);
if (sd->child_obj)
evas_object_color_set(sd->child_obj, r, g, b, a);
}
static void
_e_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
{
INTERNAL_ENTRY;
evas_object_clip_set(sd->child_obj, clip);
if (sd->child_obj)
evas_object_clip_set(sd->child_obj, clip);
}
static void
_e_smart_clip_unset(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_clip_unset(sd->child_obj);
if (sd->child_obj)
evas_object_clip_unset(sd->child_obj);
}
/* never need to touch this */

View File

@ -114,9 +114,12 @@ e_scrollframe_child_set(Evas_Object *obj, Evas_Object *child)
API_ENTRY return;
if (sd->child_obj)
{
e_pan_child_set(sd->pan_obj, NULL);
evas_object_event_callback_del(sd->child_obj, EVAS_CALLBACK_FREE,
_e_smart_child_del_hook);
if (sd->pan_obj)
{
e_pan_child_set(sd->pan_obj, NULL);
evas_object_event_callback_del(sd->child_obj, EVAS_CALLBACK_FREE,
_e_smart_child_del_hook);
}
}
sd->child_obj = child;
@ -229,6 +232,7 @@ e_scrollframe_child_pos_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
double vx, vy;
API_ENTRY return;
if (!sd->pan_obj) return;
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
if (mx > 0) vx = (double)x / (double)mx;
else vx = 0.0;
@ -247,7 +251,13 @@ EAPI void
e_scrollframe_child_pos_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
{
API_ENTRY return;
sd->pan_func.get(sd->pan_obj, x, y);
if (sd->pan_obj)
sd->pan_func.get(sd->pan_obj, x, y);
else
{
*x = 0;
*y = 0;
}
}
EAPI void
@ -256,6 +266,7 @@ e_scrollframe_child_region_show(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Ev
Evas_Coord mx = 0, my = 0, cw = 0, ch = 0, px = 0, py = 0, nx, ny;
API_ENTRY return;
if (!sd->pan_obj) return;
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
sd->pan_func.child_size_get(sd->pan_obj, &cw, &ch);
sd->pan_func.get(sd->pan_obj, &px, &py);
@ -406,6 +417,7 @@ _e_smart_pan_changed_hook(void *data, Evas_Object *obj __UNUSED__, void *event_i
E_Smart_Data *sd;
sd = data;
if (!sd->pan_obj) return;
sd->pan_func.child_size_get(sd->pan_obj, &w, &h);
if ((w != sd->child.w) || (h != sd->child.h))
{
@ -422,6 +434,7 @@ _e_smart_pan_pan_changed_hook(void *data, Evas_Object *obj __UNUSED__, void *eve
E_Smart_Data *sd;
sd = data;
if (!sd->pan_obj) return;
sd->pan_func.get(sd->pan_obj, &x, &y);
e_scrollframe_child_pos_set(sd->smart_obj, x, y);
}
@ -655,6 +668,7 @@ _e_smart_event_key_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
sd = data;
ev = event_info;
e_scrollframe_child_pos_get(sd->smart_obj, &x, &y);
if (!sd->pan_obj) return;
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
edje_object_part_geometry_get(sd->edje_obj, "e.swallow.content", NULL, NULL, &vw, &vh);
if (!strcmp(ev->keyname, "Left"))
@ -694,10 +708,12 @@ _e_smart_scrollbar_read(E_Smart_Data *sd)
edje_object_part_drag_value_get(sd->edje_obj, "e.dragable.vbar", NULL, &vy);
edje_object_part_drag_value_get(sd->edje_obj, "e.dragable.hbar", &vx, NULL);
if (!sd->pan_obj) return;
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
x = vx * (double)mx;
y = vy * (double)my;
sd->pan_func.set(sd->pan_obj, x, y);
if (sd->pan_obj)
sd->pan_func.set(sd->pan_obj, x, y);
if (((e_config->thumbscroll_enable) || (sd->thumbscroll.forced))
&& (sd->down.now) && (!sd->down.dragged))
sd->down.now = 0;
@ -713,7 +729,8 @@ _e_smart_scrollbar_reset(E_Smart_Data *sd)
edje_object_part_drag_size_set(sd->edje_obj, "e.dragable.vbar", 1.0, 1.0);
edje_object_part_drag_size_set(sd->edje_obj, "e.dragable.hbar", 1.0, 1.0);
}
sd->pan_func.set(sd->pan_obj, 0, 0);
if (sd->pan_obj)
sd->pan_func.set(sd->pan_obj, 0, 0);
}
static int
@ -904,9 +921,12 @@ _e_smart_scrollbar_size_adjust(E_Smart_Data *sd)
&vx, NULL);
edje_object_part_drag_value_get(sd->edje_obj, "e.dragable.vbar",
NULL, &vy);
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
x = vx * mx;
y = vy * my;
if (sd->pan_obj)
{
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
x = vx * mx;
y = vy * my;
}
edje_object_part_drag_step_set(sd->edje_obj, "e.dragable.hbar",
(double)sd->step.x / (double)w, 0.0);
@ -925,7 +945,8 @@ _e_smart_scrollbar_size_adjust(E_Smart_Data *sd)
edje_object_part_drag_page_set(sd->edje_obj, "e.dragable.vbar",
0.0, -((double)sd->page.y * ((double)vh / (double)h)) / 100.0);
sd->pan_func.set(sd->pan_obj, x, y);
if (sd->pan_obj)
sd->pan_func.set(sd->pan_obj, x, y);
}
else
{
@ -933,7 +954,8 @@ _e_smart_scrollbar_size_adjust(E_Smart_Data *sd)
1.0, 1.0);
edje_object_part_drag_size_set(sd->edje_obj, "e.dragable.hbar",
1.0, 1.0);
sd->pan_func.set(sd->pan_obj, 0, 0);
if (sd->pan_obj)
sd->pan_func.set(sd->pan_obj, 0, 0);
}
_e_smart_scrollbar_bar_visibility_adjust(sd);
}
@ -1013,7 +1035,10 @@ _e_smart_del(Evas_Object *obj)
{
INTERNAL_ENTRY;
e_scrollframe_child_set(obj, NULL);
if (!sd->extern_pan) evas_object_del(sd->pan_obj);
if (sd->pan_obj)
{
if (!sd->extern_pan) evas_object_del(sd->pan_obj);
}
evas_object_del(sd->edje_obj);
evas_object_del(sd->event_obj);
if (sd->down.momentum_animator)

View File

@ -416,6 +416,7 @@ EAPI void
e_widget_change(Evas_Object *obj)
{
API_ENTRY return;
if (!e_widget_parent_get(obj)) return;
e_widget_change(e_widget_parent_get(obj));
if (sd->on_change_func) sd->on_change_func(sd->on_change_data, obj);
}
@ -532,35 +533,40 @@ static void
_e_smart_show(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_show(sd->resize_obj);
if (sd->resize_obj)
evas_object_show(sd->resize_obj);
}
static void
_e_smart_hide(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_hide(sd->resize_obj);
if (sd->resize_obj)
evas_object_hide(sd->resize_obj);
}
static void
_e_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
{
INTERNAL_ENTRY;
evas_object_color_set(sd->resize_obj, r, g, b, a);
if (sd->resize_obj)
evas_object_color_set(sd->resize_obj, r, g, b, a);
}
static void
_e_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
{
INTERNAL_ENTRY;
evas_object_clip_set(sd->resize_obj, clip);
if (sd->resize_obj)
evas_object_clip_set(sd->resize_obj, clip);
}
static void
_e_smart_clip_unset(Evas_Object *obj)
{
INTERNAL_ENTRY;
evas_object_clip_unset(sd->resize_obj);
if (sd->resize_obj)
evas_object_clip_unset(sd->resize_obj);
}
/* never need to touch this */