forked from enlightenment/efl
fix another elm bug where arrows are not "clickable" for scrolling to
next/prev item - needed to add a feature to scrolelr (and accidentally also to scrolled interface too :)) to make this work. now works. SVN revision: 74969
This commit is contained in:
parent
55f0bc9da1
commit
fee7a0c645
|
@ -8,8 +8,8 @@ group { name: "elm/toolbar/base/default";
|
||||||
image: "bt_dis_base.png" COMP;
|
image: "bt_dis_base.png" COMP;
|
||||||
image: "bt_dis_hilight.png" COMP;
|
image: "bt_dis_hilight.png" COMP;
|
||||||
image: "bt_dis_shine.png" COMP;
|
image: "bt_dis_shine.png" COMP;
|
||||||
image: "icon_left_arrow.png" COMP;
|
image: "arrow_right.png" COMP;
|
||||||
image: "icon_right_arrow.png" COMP;
|
image: "arrow_left.png" COMP;
|
||||||
}
|
}
|
||||||
parts {
|
parts {
|
||||||
part { name: "base";
|
part { name: "base";
|
||||||
|
@ -76,39 +76,34 @@ group { name: "elm/toolbar/base/default";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "left_arrow";
|
part { name: "left_arrow";
|
||||||
mouse_events: 0;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
image.normal: "icon_left_arrow.png";
|
image.normal: "arrow_left.png";
|
||||||
aspect: 1.0 1.0;
|
|
||||||
aspect_preference: VERTICAL;
|
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.5;
|
||||||
min: 32 32;
|
min: 22 22;
|
||||||
max: 32 32;
|
max: 22 22;
|
||||||
}
|
|
||||||
description { state: "hidden" 0.0;
|
|
||||||
inherit: "default" 0.0;
|
|
||||||
visible: 0;
|
visible: 0;
|
||||||
color: 255 255 255 0;
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "right_arrow";
|
part { name: "right_arrow";
|
||||||
mouse_events: 0;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
image.normal: "icon_right_arrow.png";
|
image.normal: "arrow_right.png";
|
||||||
aspect: 1.0 1.0;
|
|
||||||
aspect_preference: VERTICAL;
|
|
||||||
align: 1.0 0.5;
|
align: 1.0 0.5;
|
||||||
min: 32 32;
|
min: 22 22;
|
||||||
max: 32 32;
|
max: 22 22;
|
||||||
}
|
|
||||||
description { state: "hidden" 0.0;
|
|
||||||
inherit: "default" 0.0;
|
|
||||||
visible: 0;
|
visible: 0;
|
||||||
color: 255 255 255 0;
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "event";
|
part { name: "event"; type: RECT;
|
||||||
type: RECT;
|
|
||||||
mouse_events: 1;
|
mouse_events: 1;
|
||||||
repeat_events: 1;
|
repeat_events: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
@ -117,21 +112,39 @@ group { name: "elm/toolbar/base/default";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
programs {
|
programs {
|
||||||
program { name: "sb_hbar_show";
|
program { name: "left_show";
|
||||||
signal: "elm,action,show,hbar";
|
signal: "elm,action,show,left";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
target: "left_arrow";
|
||||||
|
}
|
||||||
|
program { name: "left_hide";
|
||||||
|
signal: "elm,action,hide,left";
|
||||||
source: "elm";
|
source: "elm";
|
||||||
action: STATE_SET "default" 0.0;
|
action: STATE_SET "default" 0.0;
|
||||||
transition: LINEAR 0.5;
|
|
||||||
target: "left_arrow";
|
target: "left_arrow";
|
||||||
|
}
|
||||||
|
program { name: "right_show";
|
||||||
|
signal: "elm,action,show,right";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
target: "right_arrow";
|
target: "right_arrow";
|
||||||
}
|
}
|
||||||
program { name: "sb_hbar_hide";
|
program { name: "right_hide";
|
||||||
signal: "elm,action,hide,hbar";
|
signal: "elm,action,hide,right";
|
||||||
source: "elm";
|
source: "elm";
|
||||||
action: STATE_SET "hidden" 0.0;
|
action: STATE_SET "default" 0.0;
|
||||||
target: "left_arrow";
|
|
||||||
target: "right_arrow";
|
target: "right_arrow";
|
||||||
transition: LINEAR 0.5;
|
}
|
||||||
|
program { name: "left_go";
|
||||||
|
signal: "mouse,down,1";
|
||||||
|
source: "left_arrow";
|
||||||
|
action: SIGNAL_EMIT "elm,action,left" "elm";
|
||||||
|
}
|
||||||
|
program { name: "right_go";
|
||||||
|
signal: "mouse,down,1";
|
||||||
|
source: "right_arrow";
|
||||||
|
action: SIGNAL_EMIT "elm,action,right" "elm";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ test_toolbar(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
|
||||||
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
|
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
|
||||||
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
|
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
|
||||||
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
|
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
|
||||||
elm_object_scale_set(tb, 0.9);
|
// elm_object_scale_set(tb, 0.9);
|
||||||
|
|
||||||
ph1 = elm_photo_add(win);
|
ph1 = elm_photo_add(win);
|
||||||
ph2 = elm_photo_add(win);
|
ph2 = elm_photo_add(win);
|
||||||
|
|
|
@ -508,6 +508,58 @@ _elm_scroll_smooth_debug_shutdown(void)
|
||||||
DBG(" Standard deviation of Y-axis velocity: %9.3f\n", sqrt(y_dev));
|
DBG(" Standard deviation of Y-axis velocity: %9.3f\n", sqrt(y_dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_direction_arrows_eval(Elm_Scrollable_Smart_Interface_Data *sid)
|
||||||
|
{
|
||||||
|
Eina_Bool go_left = EINA_TRUE, go_right = EINA_TRUE;
|
||||||
|
Eina_Bool go_up = EINA_TRUE, go_down = EINA_TRUE;
|
||||||
|
Evas_Coord x = 0, y = 0, mx = 0, my = 0, minx = 0, miny = 0;
|
||||||
|
|
||||||
|
if (!sid->edje_obj || !sid->pan_obj) return;
|
||||||
|
ELM_PAN_DATA_GET(sid->pan_obj, psd);
|
||||||
|
|
||||||
|
psd->api->pos_max_get(sid->pan_obj, &mx, &my);
|
||||||
|
psd->api->pos_min_get(sid->pan_obj, &minx, &miny);
|
||||||
|
psd->api->pos_get(sid->pan_obj, &x, &y);
|
||||||
|
|
||||||
|
if (x == minx) go_left = EINA_FALSE;
|
||||||
|
if (x == (mx + minx)) go_right = EINA_FALSE;
|
||||||
|
if (y == miny) go_up = EINA_FALSE;
|
||||||
|
if (y == (my + miny)) go_down = EINA_FALSE;
|
||||||
|
if (go_left != sid->go_left)
|
||||||
|
{
|
||||||
|
if (go_left)
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,show,left", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,hide,left", "elm");
|
||||||
|
sid->go_left = go_left;
|
||||||
|
}
|
||||||
|
if (go_right != sid->go_right)
|
||||||
|
{
|
||||||
|
if (go_right)
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,show,right", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,hide,right", "elm");
|
||||||
|
sid->go_right= go_right;
|
||||||
|
}
|
||||||
|
if (go_up != sid->go_up)
|
||||||
|
{
|
||||||
|
if (go_up)
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,show,up", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,hide,up", "elm");
|
||||||
|
sid->go_up = go_up;
|
||||||
|
}
|
||||||
|
if (go_down != sid->go_down)
|
||||||
|
{
|
||||||
|
if (go_down)
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,show,down", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,hide,down", "elm");
|
||||||
|
sid->go_down= go_down;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_elm_scroll_smooth_debug_movetime_add(int x,
|
_elm_scroll_smooth_debug_movetime_add(int x,
|
||||||
int y)
|
int y)
|
||||||
|
@ -647,7 +699,8 @@ _elm_scroll_scroll_bar_h_visibility_adjust(
|
||||||
if (sid->cb_func.content_min_limit)
|
if (sid->cb_func.content_min_limit)
|
||||||
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_elm_direction_arrows_eval(sid);
|
||||||
return scroll_h_vis_change;
|
return scroll_h_vis_change;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -737,6 +790,7 @@ _elm_scroll_scroll_bar_v_visibility_adjust(
|
||||||
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_elm_direction_arrows_eval(sid);
|
||||||
return scroll_v_vis_change;
|
return scroll_v_vis_change;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -877,7 +931,9 @@ _elm_scroll_scroll_bar_read_and_update(
|
||||||
psd->api->pos_get(sid->pan_obj, &px, &py);
|
psd->api->pos_get(sid->pan_obj, &px, &py);
|
||||||
psd->api->pos_set(sid->pan_obj, x, y);
|
psd->api->pos_set(sid->pan_obj, x, y);
|
||||||
if ((px != x) || (py != y))
|
if ((px != x) || (py != y))
|
||||||
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
|
{
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1411,11 +1467,13 @@ _elm_scroll_content_pos_set(Evas_Object *obj,
|
||||||
{
|
{
|
||||||
if (sid->cb_func.edge_left)
|
if (sid->cb_func.edge_left)
|
||||||
sid->cb_func.edge_left(obj, NULL);
|
sid->cb_func.edge_left(obj, NULL);
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,edge,left", "elm");
|
||||||
}
|
}
|
||||||
if (x == (mx + minx))
|
if (x == (mx + minx))
|
||||||
{
|
{
|
||||||
if (sid->cb_func.edge_right)
|
if (sid->cb_func.edge_right)
|
||||||
sid->cb_func.edge_right(obj, NULL);
|
sid->cb_func.edge_right(obj, NULL);
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,edge,right", "elm");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (y != py)
|
if (y != py)
|
||||||
|
@ -1424,13 +1482,17 @@ _elm_scroll_content_pos_set(Evas_Object *obj,
|
||||||
{
|
{
|
||||||
if (sid->cb_func.edge_top)
|
if (sid->cb_func.edge_top)
|
||||||
sid->cb_func.edge_top(obj, NULL);
|
sid->cb_func.edge_top(obj, NULL);
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,edge,top", "elm");
|
||||||
}
|
}
|
||||||
if (y == my + miny)
|
if (y == my + miny)
|
||||||
{
|
{
|
||||||
if (sid->cb_func.edge_bottom)
|
if (sid->cb_func.edge_bottom)
|
||||||
sid->cb_func.edge_bottom(obj, NULL);
|
sid->cb_func.edge_bottom(obj, NULL);
|
||||||
|
edje_object_signal_emit(sid->edje_obj, "elm,edge,bottom", "elm");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_elm_direction_arrows_eval(sid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -3233,6 +3295,7 @@ _elm_scroll_scroll_bar_reset(Elm_Scrollable_Smart_Interface_Data *sid)
|
||||||
}
|
}
|
||||||
if ((px != minx) || (py != miny))
|
if ((px != minx) || (py != miny))
|
||||||
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
|
edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
|
||||||
|
_elm_direction_arrows_eval(sid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* even external pan objects get this */
|
/* even external pan objects get this */
|
||||||
|
@ -3642,6 +3705,7 @@ _elm_scroll_policy_set(Evas_Object *obj,
|
||||||
_elm_scroll_scroll_bar_size_adjust(sid);
|
_elm_scroll_scroll_bar_size_adjust(sid);
|
||||||
if (sid->cb_func.content_min_limit)
|
if (sid->cb_func.content_min_limit)
|
||||||
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h);
|
||||||
|
_elm_direction_arrows_eval(sid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -303,6 +303,10 @@ struct _Elm_Scrollable_Smart_Interface_Data
|
||||||
Eina_Bool hold : 1;
|
Eina_Bool hold : 1;
|
||||||
Eina_Bool min_w : 1;
|
Eina_Bool min_w : 1;
|
||||||
Eina_Bool min_h : 1;
|
Eina_Bool min_h : 1;
|
||||||
|
Eina_Bool go_left : 1;
|
||||||
|
Eina_Bool go_right : 1;
|
||||||
|
Eina_Bool go_up : 1;
|
||||||
|
Eina_Bool go_down : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _Elm_Scrollable_Smart_Interface Elm_Scrollable_Smart_Interface;
|
typedef struct _Elm_Scrollable_Smart_Interface Elm_Scrollable_Smart_Interface;
|
||||||
|
|
|
@ -1598,6 +1598,110 @@ _item_state_new(const char *label, const char *icon_str, Evas_Object *icon, Evas
|
||||||
return it_state;
|
return it_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_toolbar_action_left_cb(void *data, Evas_Object *o __UNUSED__, const char *sig __UNUSED__, const char *src __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *obj = data;
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
Elm_Toolbar_Item *it, *it2;
|
||||||
|
Eina_Bool done = EINA_FALSE;
|
||||||
|
|
||||||
|
if (!wd) return;
|
||||||
|
EINA_INLIST_FOREACH(wd->items, it)
|
||||||
|
{
|
||||||
|
if (it->selected)
|
||||||
|
{
|
||||||
|
Eina_Bool found = EINA_FALSE;
|
||||||
|
|
||||||
|
EINA_INLIST_REVERSE_FOREACH(wd->items, it2)
|
||||||
|
{
|
||||||
|
if (elm_object_item_disabled_get((Elm_Object_Item *)it2))
|
||||||
|
continue;
|
||||||
|
if (it2 == it)
|
||||||
|
{
|
||||||
|
found = EINA_TRUE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!found) continue;
|
||||||
|
if (it2->separator) continue;
|
||||||
|
_item_unselect(it);
|
||||||
|
_item_select(it2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
done = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!done)
|
||||||
|
{
|
||||||
|
EINA_INLIST_FOREACH(wd->items, it)
|
||||||
|
{
|
||||||
|
if (elm_object_item_disabled_get((Elm_Object_Item *)it)) continue;
|
||||||
|
if (it->separator) continue;
|
||||||
|
_item_select(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_toolbar_action_right_cb(void *data, Evas_Object *o __UNUSED__, const char *sig __UNUSED__, const char *src __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *obj = data;
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
Elm_Toolbar_Item *it, *it2;
|
||||||
|
Eina_Bool done = EINA_FALSE;
|
||||||
|
|
||||||
|
if (!wd) return;
|
||||||
|
EINA_INLIST_FOREACH(wd->items, it)
|
||||||
|
{
|
||||||
|
if (it->selected)
|
||||||
|
{
|
||||||
|
Eina_Bool found = EINA_FALSE;
|
||||||
|
|
||||||
|
EINA_INLIST_FOREACH(wd->items, it2)
|
||||||
|
{
|
||||||
|
if (elm_object_item_disabled_get((Elm_Object_Item *)it2))
|
||||||
|
continue;
|
||||||
|
if (it2 == it)
|
||||||
|
{
|
||||||
|
found = EINA_TRUE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!found) continue;
|
||||||
|
if (it2->separator) continue;
|
||||||
|
_item_unselect(it);
|
||||||
|
_item_select(it2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
done = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!done)
|
||||||
|
{
|
||||||
|
EINA_INLIST_REVERSE_FOREACH(wd->items, it)
|
||||||
|
{
|
||||||
|
if (elm_object_item_disabled_get((Elm_Object_Item *)it)) continue;
|
||||||
|
if (it->separator) continue;
|
||||||
|
_item_select(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_toolbar_action_up_cb(void *data, Evas_Object *o, const char *sig, const char *src)
|
||||||
|
{
|
||||||
|
_elm_toolbar_action_left_cb(data, o, sig, src);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_toolbar_action_down_cb(void *data, Evas_Object *o, const char *sig, const char *src)
|
||||||
|
{
|
||||||
|
_elm_toolbar_action_right_cb(data, o, sig, src);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Evas_Object *
|
EAPI Evas_Object *
|
||||||
elm_toolbar_add(Evas_Object *parent)
|
elm_toolbar_add(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
|
@ -1632,7 +1736,19 @@ elm_toolbar_add(Evas_Object *parent)
|
||||||
elm_smart_scroller_policy_set(wd->scr,
|
elm_smart_scroller_policy_set(wd->scr,
|
||||||
ELM_SMART_SCROLLER_POLICY_AUTO,
|
ELM_SMART_SCROLLER_POLICY_AUTO,
|
||||||
ELM_SMART_SCROLLER_POLICY_OFF);
|
ELM_SMART_SCROLLER_POLICY_OFF);
|
||||||
|
edje_object_signal_callback_add(elm_smart_scroller_edje_object_get(wd->scr),
|
||||||
|
"elm,action,left", "elm",
|
||||||
|
_elm_toolbar_action_left_cb, obj);
|
||||||
|
edje_object_signal_callback_add(elm_smart_scroller_edje_object_get(wd->scr),
|
||||||
|
"elm,action,right", "elm",
|
||||||
|
_elm_toolbar_action_right_cb, obj);
|
||||||
|
edje_object_signal_callback_add(elm_smart_scroller_edje_object_get(wd->scr),
|
||||||
|
"elm,action,up", "elm",
|
||||||
|
_elm_toolbar_action_up_cb, obj);
|
||||||
|
edje_object_signal_callback_add(elm_smart_scroller_edje_object_get(wd->scr),
|
||||||
|
"elm,action,down", "elm",
|
||||||
|
_elm_toolbar_action_down_cb, obj);
|
||||||
|
|
||||||
wd->shrink_mode = ELM_TOOLBAR_SHRINK_NONE;
|
wd->shrink_mode = ELM_TOOLBAR_SHRINK_NONE;
|
||||||
wd->icon_size = _elm_toolbar_icon_size_get(wd);
|
wd->icon_size = _elm_toolbar_icon_size_get(wd);
|
||||||
|
|
||||||
|
|
|
@ -269,6 +269,10 @@ struct _Smart_Data
|
||||||
Eina_Bool bounce_animator_disabled :1;
|
Eina_Bool bounce_animator_disabled :1;
|
||||||
Eina_Bool is_mirrored : 1;
|
Eina_Bool is_mirrored : 1;
|
||||||
Eina_Bool wheel_disabled : 1;
|
Eina_Bool wheel_disabled : 1;
|
||||||
|
Eina_Bool go_left : 1;
|
||||||
|
Eina_Bool go_right : 1;
|
||||||
|
Eina_Bool go_up : 1;
|
||||||
|
Eina_Bool go_down : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
@ -318,6 +322,57 @@ elm_smart_scroller_add(Evas *evas)
|
||||||
return evas_object_smart_add(evas, _smart);
|
return evas_object_smart_add(evas, _smart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_direction_arrows_eval(Smart_Data *sd)
|
||||||
|
{
|
||||||
|
Eina_Bool go_left = EINA_TRUE, go_right = EINA_TRUE;
|
||||||
|
Eina_Bool go_up = EINA_TRUE, go_down = EINA_TRUE;
|
||||||
|
Evas_Coord x = 0, y = 0, mx = 0, my = 0, minx = 0, miny = 0;
|
||||||
|
|
||||||
|
if (!sd->edje_obj || !sd->pan_obj) return;
|
||||||
|
|
||||||
|
sd->pan_func.max_get(sd->pan_obj, &mx, &my);
|
||||||
|
sd->pan_func.min_get(sd->pan_obj, &minx, &miny);
|
||||||
|
sd->pan_func.get(sd->pan_obj, &x, &y);
|
||||||
|
|
||||||
|
if (x == minx) go_left = EINA_FALSE;
|
||||||
|
if (x == (mx + minx)) go_right = EINA_FALSE;
|
||||||
|
if (y == miny) go_up = EINA_FALSE;
|
||||||
|
if (y == (my + miny)) go_down = EINA_FALSE;
|
||||||
|
if (go_left != sd->go_left)
|
||||||
|
{
|
||||||
|
if (go_left)
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show,left", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,left", "elm");
|
||||||
|
sd->go_left = go_left;
|
||||||
|
}
|
||||||
|
if (go_right != sd->go_right)
|
||||||
|
{
|
||||||
|
if (go_right)
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show,right", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,right", "elm");
|
||||||
|
sd->go_right= go_right;
|
||||||
|
}
|
||||||
|
if (go_up != sd->go_up)
|
||||||
|
{
|
||||||
|
if (go_up)
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show,up", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,up", "elm");
|
||||||
|
sd->go_up = go_up;
|
||||||
|
}
|
||||||
|
if (go_down != sd->go_down)
|
||||||
|
{
|
||||||
|
if (go_down)
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show,down", "elm");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,down", "elm");
|
||||||
|
sd->go_down= go_down;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Evas_Coord
|
static Evas_Coord
|
||||||
_elm_smart_scroller_x_mirrored_get(Evas_Object *obj, Evas_Coord x)
|
_elm_smart_scroller_x_mirrored_get(Evas_Object *obj, Evas_Coord x)
|
||||||
{
|
{
|
||||||
|
@ -490,6 +545,7 @@ elm_smart_scroller_custom_edje_file_set(Evas_Object *obj, char *file, char *grou
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,vbar", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,vbar", "elm");
|
||||||
else
|
else
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,show_notalways,vbar", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show_notalways,vbar", "elm");
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
|
@ -1240,6 +1296,7 @@ elm_smart_scroller_child_pos_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||||
if (y == my + miny)
|
if (y == my + miny)
|
||||||
evas_object_smart_callback_call(obj, "edge,bottom", NULL);
|
evas_object_smart_callback_call(obj, "edge,bottom", NULL);
|
||||||
}
|
}
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1438,6 +1495,7 @@ elm_smart_scroller_policy_set(Evas_Object *obj, Elm_Smart_Scroller_Policy hbar,
|
||||||
else
|
else
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,show_notalways,vbar", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,show_notalways,vbar", "elm");
|
||||||
_smart_scrollbar_size_adjust(sd);
|
_smart_scrollbar_size_adjust(sd);
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -2728,6 +2786,7 @@ _smart_scrollbar_read(Smart_Data *sd)
|
||||||
sd->pan_func.set(sd->pan_obj, x, y);
|
sd->pan_func.set(sd->pan_obj, x, y);
|
||||||
if ((px != x) || (py != y))
|
if ((px != x) || (py != y))
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2750,6 +2809,7 @@ _smart_scrollbar_reset(Smart_Data *sd)
|
||||||
}
|
}
|
||||||
if ((px != minx) || (py != miny))
|
if ((px != minx) || (py != miny))
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -2818,6 +2878,7 @@ _smart_scrollbar_bar_v_visibility_adjust(Smart_Data *sd)
|
||||||
else
|
else
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,vbar", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,vbar", "elm");
|
||||||
}
|
}
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
return scroll_v_vis_change;
|
return scroll_v_vis_change;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2888,6 +2949,7 @@ _smart_scrollbar_bar_h_visibility_adjust(Smart_Data *sd)
|
||||||
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,hbar", "elm");
|
edje_object_signal_emit(sd->edje_obj, "elm,action,hide,hbar", "elm");
|
||||||
_smart_scrollbar_size_adjust(sd);
|
_smart_scrollbar_size_adjust(sd);
|
||||||
}
|
}
|
||||||
|
_elm_direction_arrows_eval(sd);
|
||||||
return scroll_h_vis_change;
|
return scroll_h_vis_change;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue