From 11774174c61fd796793fd67518295e462ebe01b6 Mon Sep 17 00:00:00 2001 From: "chuneon.park" Date: Tue, 15 Mar 2011 15:04:32 +0900 Subject: [PATCH] fixed CRI errors --- src/lib/elm_controlbar.c | 8 -------- src/lib/elm_list.c | 3 ++- src/lib/elm_navigationbar.c | 11 ++++++----- src/lib/elm_pager.c | 26 +++++++++++++++++++++++--- src/lib/elm_scroller.c | 12 ++++++++---- src/lib/elm_widget.c | 16 +++++++++++----- src/lib/els_pan.c | 15 ++++++++++----- src/lib/els_scroller.c | 42 ++++++++++++++++++++++++++---------------- 8 files changed, 86 insertions(+), 47 deletions(-) diff --git a/src/lib/elm_controlbar.c b/src/lib/elm_controlbar.c index fa536c0..7c7e5d3 100644 --- a/src/lib/elm_controlbar.c +++ b/src/lib/elm_controlbar.c @@ -283,14 +283,6 @@ _del_hook(Evas_Object * obj) free(item); item = NULL; } - if (wd->view) - { - Evas_Object *content; - content = elm_layout_content_unset(wd->view, "elm.swallow.view"); - evas_object_hide(content); - evas_object_del(wd->view); - wd->view = NULL; - } if (wd->bg) { evas_object_del(wd->bg); diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index e4d3408..b228715 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -1245,7 +1245,6 @@ elm_list_add(Evas_Object *parent) wd->scr = elm_smart_scroller_add(e); elm_smart_scroller_widget_set(wd->scr, obj); - _theme_hook(obj); elm_widget_resize_object_set(obj, wd->scr); evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); @@ -1268,6 +1267,8 @@ elm_list_add(Evas_Object *parent) evas_object_show(wd->box); + _theme_hook(obj); + wd->mode = ELM_LIST_SCROLL; evas_object_smart_callback_add(wd->scr, "edge,left", _scroll_edge_left, obj); diff --git a/src/lib/elm_navigationbar.c b/src/lib/elm_navigationbar.c index 5f08c3b..6fc5215 100644 --- a/src/lib/elm_navigationbar.c +++ b/src/lib/elm_navigationbar.c @@ -306,11 +306,11 @@ _transition_complete_cb(void *data) } else if (prev_it) { - evas_object_hide(prev_it->fn_btn1); - evas_object_hide(prev_it->back_btn); - evas_object_hide(prev_it->title_obj); - evas_object_hide(prev_it->fn_btn2); - evas_object_hide(prev_it->fn_btn3); + if (prev_it->fn_btn1) evas_object_hide(prev_it->fn_btn1); + if (prev_it->back_btn) evas_object_hide(prev_it->back_btn); + if (prev_it->title_obj) evas_object_hide(prev_it->title_obj); + if (prev_it->fn_btn2) evas_object_hide(prev_it->fn_btn2); + if (prev_it->fn_btn3) evas_object_hide(prev_it->fn_btn3); } if ((it) && (!wd->hidden)) { @@ -407,6 +407,7 @@ _hide_finished(void *data, Evas_Object *obj, void *event_info) static int _set_button_width(Evas_Object *obj) { + if (!obj) return 0; Evas_Coord minw = -1, minh = -1, maxw= -1, maxh = -1; Evas_Coord w = 0, h = 0; diff --git a/src/lib/elm_pager.c b/src/lib/elm_pager.c index 0f03ed7..873c820 100644 --- a/src/lib/elm_pager.c +++ b/src/lib/elm_pager.c @@ -51,6 +51,8 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; + evas_object_del(wd->clip); + evas_object_del(wd->rect); free(wd); } @@ -189,6 +191,7 @@ _move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSE Item *it; if (!wd) return; evas_object_geometry_get(obj, &x, &y, NULL, NULL); + evas_object_move(wd->clip, x, y); EINA_LIST_FOREACH(wd->stack, l, it) evas_object_move(it->base, x, y); } @@ -217,6 +220,22 @@ _sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info) } static void +_show(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + if (!wd) return; + evas_object_show(wd->clip); +} + +static void +_hide(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + if (!wd) return; + evas_object_hide(wd->clip); +} + +static void _resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); @@ -225,6 +244,7 @@ _resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNU Item *it; if (!wd) return; evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_resize(wd->clip, w, h); EINA_LIST_FOREACH(wd->stack, l, it) evas_object_resize(it->base, w, h); } @@ -273,20 +293,20 @@ elm_pager_add(Evas_Object *parent) elm_widget_can_focus_set(obj, EINA_FALSE); wd->clip = evas_object_rectangle_add(e); - elm_widget_resize_object_set(obj, wd->clip); - elm_widget_sub_object_add(obj, wd->clip); wd->rect = evas_object_rectangle_add(e); - elm_widget_sub_object_add(obj, wd->rect); evas_object_color_set(wd->rect, 255, 255, 255, 0); evas_object_clip_set(wd->rect, wd->clip); evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj); evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _show, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj); evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); _sizing_eval(obj); + return obj; } diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c index 5ee7efb..743af9d 100644 --- a/src/lib/elm_scroller.c +++ b/src/lib/elm_scroller.c @@ -271,9 +271,12 @@ _sizing_eval(Evas_Object *obj) double xw, yw; if (!wd) return; - evas_object_size_hint_min_get(wd->content, &minw, &minh); - evas_object_size_hint_max_get(wd->content, &maxw, &maxh); - evas_object_size_hint_weight_get(wd->content, &xw, &yw); + if (wd->content) + { + evas_object_size_hint_min_get(wd->content, &minw, &minh); + evas_object_size_hint_max_get(wd->content, &maxw, &maxh); + evas_object_size_hint_weight_get(wd->content, &xw, &yw); + } if (wd->scr) { elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, &vh); @@ -289,7 +292,8 @@ _sizing_eval(Evas_Object *obj) else if ((maxh > 0) && (vh > maxh)) vh = maxh; } else if (minh > 0) vh = minh; - evas_object_resize(wd->content, vw, vh); + if (wd->content) + evas_object_resize(wd->content, vw, vh); w = -1; h = -1; edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &vmw, &vmh); diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 3ab77b1..59c0f40 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -623,7 +623,8 @@ elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj) { if (sd2->parent_obj == obj) return; - elm_widget_sub_object_del(sd2->parent_obj, sobj); + if (sd2->parent_obj) + elm_widget_sub_object_del(sd2->parent_obj, sobj); sd2->parent_obj = obj; if (!sd->child_can_focus && (_is_focusable(sobj))) sd->child_can_focus = EINA_TRUE; @@ -1495,11 +1496,12 @@ elm_widget_focus_steal(Evas_Object *obj) { parent = elm_widget_parent_get(parent); sd = evas_object_smart_data_get(parent); - if (elm_widget_focus_get(sd->resize_obj)) + if (sd->resize_obj) { - elm_widget_focused_object_clear(sd->resize_obj); + if (elm_widget_focus_get(sd->resize_obj)) + elm_widget_focused_object_clear(sd->resize_obj); } - else + else { const Eina_List *l; Evas_Object *child; @@ -2442,7 +2444,11 @@ _newest_focus_order_get(Evas_Object *obj, unsigned int *newest_focus_order, Eina if (!ret) continue; best = ret; } - if ((can_focus_only) && (!elm_widget_can_focus_get(best))) return NULL; + if (can_focus_only) + { + if ((!best) || (!elm_widget_can_focus_get(best))) + return NULL; + } return best; } diff --git a/src/lib/els_pan.c b/src/lib/els_pan.c index 436d287..9e0ae1c 100644 --- a/src/lib/els_pan.c +++ b/src/lib/els_pan.c @@ -220,35 +220,40 @@ static void _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 _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 _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 _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 _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 */ diff --git a/src/lib/els_scroller.c b/src/lib/els_scroller.c index 95b2dea..eca7dbe 100644 --- a/src/lib/els_scroller.c +++ b/src/lib/els_scroller.c @@ -176,10 +176,12 @@ elm_smart_scroller_child_set(Evas_Object *obj, Evas_Object *child) o = _elm_smart_pan_add(evas_object_evas_get(obj)); sd->pan_obj = o; evas_object_smart_callback_add(o, "changed", _smart_pan_changed_hook, sd); - evas_object_smart_callback_add(o, "pan_changed", _smart_pan_pan_changed_hook, sd); - evas_object_show(o); - edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", o); + evas_object_smart_callback_add(o, "pan_changed", _smart_pan_pan_changed_hook, sd); + _elm_smart_pan_child_set(o, child); + edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", o); } + else + _elm_smart_pan_child_set(sd->pan_obj, child); sd->pan_func.set = _elm_smart_pan_set; sd->pan_func.get = _elm_smart_pan_get; @@ -188,7 +190,6 @@ elm_smart_scroller_child_set(Evas_Object *obj, Evas_Object *child) sd->pan_func.child_size_get = _elm_smart_pan_child_size_get; evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _smart_child_del_hook, sd); - _elm_smart_pan_child_set(sd->pan_obj, sd->child_obj); sd->pan_func.child_size_get(sd->pan_obj, &w, &h); sd->child.w = w; sd->child.h = h; @@ -1052,6 +1053,7 @@ void elm_smart_scroller_child_viewport_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) { API_ENTRY return; + if (!sd->pan_obj) return; edje_object_calc_force(sd->edje_obj); evas_object_geometry_get(sd->pan_obj, NULL, NULL, w, h); } @@ -1164,8 +1166,9 @@ elm_smart_scroller_object_theme_set(Evas_Object *parent, Evas_Object *obj, const { API_ENTRY return; Evas_Coord mw, mh; + double parent_scale = parent ? elm_widget_scale_get(parent) : 1; _elm_theme_object_set(parent, sd->edje_obj, clas, group, style); - edje_object_scale_set(sd->edje_obj, elm_widget_scale_get(parent) * _elm_config->scale); + edje_object_scale_set(sd->edje_obj, parent_scale * _elm_config->scale); if (sd->pan_obj) edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", sd->pan_obj); mw = mh = -1; @@ -2264,9 +2267,12 @@ _smart_scrollbar_reset(Smart_Data *sd) edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.vbar", 1.0, 1.0); edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.hbar", 1.0, 1.0); } - sd->pan_func.min_get(sd->pan_obj, &minx, &miny); - sd->pan_func.get(sd->pan_obj, &px, &py); - sd->pan_func.set(sd->pan_obj, minx, miny); + if (sd->pan_obj) + { + sd->pan_func.min_get(sd->pan_obj, &minx, &miny); + sd->pan_func.get(sd->pan_obj, &px, &py); + sd->pan_func.set(sd->pan_obj, minx, miny); + } if ((px != minx) || (py != miny)) edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm"); } @@ -2275,10 +2281,11 @@ static int _smart_scrollbar_bar_v_visibility_adjust(Smart_Data *sd) { int scroll_v_vis_change = 0; - Evas_Coord h, vw, vh; + Evas_Coord h, vw = 0, vh = 0; h = sd->child.h; - evas_object_geometry_get(sd->pan_obj, NULL, NULL, &vw, &vh); + if (sd->pan_obj) + evas_object_geometry_get(sd->pan_obj, NULL, NULL, &vw, &vh); if (sd->vbar_visible) { if (sd->vbar_flags == ELM_SMART_SCROLLER_POLICY_AUTO) @@ -2343,10 +2350,11 @@ static int _smart_scrollbar_bar_h_visibility_adjust(Smart_Data *sd) { int scroll_h_vis_change = 0; - Evas_Coord w, vw, vh; + Evas_Coord w, vw = 0, vh = 0; w = sd->child.w; - evas_object_geometry_get(sd->pan_obj, NULL, NULL, &vw, &vh); + if (sd->pan_obj) + evas_object_geometry_get(sd->pan_obj, NULL, NULL, &vw, &vh); if (sd->hbar_visible) { if (sd->hbar_flags == ELM_SMART_SCROLLER_POLICY_AUTO) @@ -2483,9 +2491,12 @@ _smart_scrollbar_size_adjust(Smart_Data *sd) edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.vbar", 1.0, 1.0); edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.hbar", 1.0, 1.0); - sd->pan_func.min_get(sd->pan_obj, &minx, &miny); - sd->pan_func.get(sd->pan_obj, &px, &py); - sd->pan_func.set(sd->pan_obj, minx, miny); + if (sd->pan_obj) + { + sd->pan_func.min_get(sd->pan_obj, &minx, &miny); + sd->pan_func.get(sd->pan_obj, &px, &py); + sd->pan_func.set(sd->pan_obj, minx, miny); + } if ((px != minx) || (py != miny)) edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm"); } @@ -2536,7 +2547,6 @@ _smart_add(Evas_Object *obj) o = edje_object_add(evas_object_evas_get(obj)); evas_object_propagate_events_set(o, 0); sd->edje_obj = o; - // FIXME: null parent obj ... :( elm_smart_scroller_object_theme_set(NULL, obj, "scroller", "base", "default"); edje_object_signal_callback_add(o, "drag", "elm.dragable.vbar", _smart_edje_drag_v, sd); edje_object_signal_callback_add(o, "drag,start", "elm.dragable.vbar", _smart_edje_drag_v_start, sd); -- 2.7.4