Scroller now checks if its theme has a highlight for focus, and if so, sets the necessary flags for it to work.

Also, a not really nice highlight for the scroller theme, but I am no artists and it shows the feature working.


SVN revision: 52650
This commit is contained in:
Iván Briano 2010-09-23 19:43:50 +00:00
parent ae44befb75
commit c9a4a09aaa
2 changed files with 55 additions and 4 deletions

View File

@ -216,6 +216,10 @@ collections {
alias: "elm/carousel/base/default"; alias: "elm/carousel/base/default";
alias: "elm/gengrid/base/default"; alias: "elm/gengrid/base/default";
data {
item: "focus_highlight" "on";
}
script { script {
public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer; public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
public timer0(val) { public timer0(val) {
@ -245,6 +249,7 @@ collections {
image: "bt_sm_base2.png" COMP; image: "bt_sm_base2.png" COMP;
image: "bt_sm_shine.png" COMP; image: "bt_sm_shine.png" COMP;
image: "bt_sm_hilight.png" COMP; image: "bt_sm_hilight.png" COMP;
image: "sl_bt2_2.png" COMP;
image: "sb_runnerh.png" COMP; image: "sb_runnerh.png" COMP;
image: "sb_runnerv.png" COMP; image: "sb_runnerv.png" COMP;
} }
@ -289,7 +294,29 @@ collections {
} }
fill.smooth : 0; fill.smooth : 0;
} }
} description { state: "enabled" 0.0;
inherit: "default" 0.0;
color: 200 155 0 255;
}
}
part { name: "focus_highlight";
mouse_events: 0;
description { state: "default" 0.0;
rel1.offset: -1 -1;
rel2.offset: 0 0;
image {
normal: "sl_bt2_2.png";
border: 7 7 7 7;
middle: 0;
}
fill.smooth : 0;
color: 200 155 0 0;
}
description { state: "enabled" 0.0;
inherit: "default" 0.0;
color: 200 155 0 255;
}
}
part { name: "sb_vbar_clip_master"; part { name: "sb_vbar_clip_master";
type: RECT; type: RECT;
mouse_events: 0; mouse_events: 0;
@ -662,6 +689,23 @@ collections {
set_int(sbvis_timer, v); set_int(sbvis_timer, v);
} }
} }
program { name: "highlight_show";
signal: "elm,action,focus_highlight,show";
source: "elm";
action: STATE_SET "enabled" 0.0;
transition: ACCELERATE 0.3;
target: "focus_highlight";
target: "conf_over";
}
program { name: "highlight_hide";
signal: "elm,action,focus_highlight,hide";
source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.3;
target: "focus_highlight";
target: "conf_over";
}
} }
} }

View File

@ -87,10 +87,19 @@ _theme_hook(Evas_Object *obj)
if (!wd) return; if (!wd) return;
if (wd->scr) if (wd->scr)
{ {
Evas_Object *edj;
const char *str;
elm_smart_scroller_object_theme_set(obj, wd->scr, elm_smart_scroller_object_theme_set(obj, wd->scr,
wd->widget_name, wd->widget_base, wd->widget_name, wd->widget_base,
elm_widget_style_get(obj)); elm_widget_style_get(obj));
// edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale); // edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale);
edj = elm_smart_scroller_edje_object_get(wd->scr);
str = edje_object_data_get(edj, "focus_highlight");
if (str && !strcmp(str, "on"))
elm_widget_highlight_in_theme_set(obj, EINA_TRUE);
else
elm_widget_highlight_in_theme_set(obj, EINA_FALSE);
} }
_sizing_eval(obj); _sizing_eval(obj);
} }
@ -336,9 +345,7 @@ elm_scroller_add(Evas_Object *parent)
wd->scr = elm_smart_scroller_add(e); wd->scr = elm_smart_scroller_add(e);
elm_smart_scroller_widget_set(wd->scr, obj); elm_smart_scroller_widget_set(wd->scr, obj);
elm_smart_scroller_object_theme_set(obj, wd->scr, _theme_hook(obj);
wd->widget_name, wd->widget_base,
elm_widget_style_get(obj));
elm_widget_resize_object_set(obj, wd->scr); elm_widget_resize_object_set(obj, wd->scr);
evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS, evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj); _changed_size_hints, obj);