return EINA_TRUE;
}
+static Eina_Bool
+_elm_naviframe_smart_activate(Evas_Object *obj, Elm_Activate act)
+{
+ Elm_Naviframe_Item *it;
+
+ if (act != ELM_ACTIVATE_BACK) return EINA_FALSE;
+ if (elm_widget_disabled_get(obj)) return EINA_FALSE;
+
+ it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
+ if (!it) return EINA_FALSE;
+
+ if (it->title_prev_btn)
+ evas_object_smart_callback_call(it->title_prev_btn, SIG_CLICKED, NULL);
+
+ return EINA_TRUE;
+}
+
static void
_elm_naviframe_smart_set_user(Elm_Naviframe_Smart_Class *sc)
{
ELM_WIDGET_CLASS(sc)->focus_direction = _elm_naviframe_smart_focus_direction;
ELM_WIDGET_CLASS(sc)->access = _elm_naviframe_smart_access;
ELM_WIDGET_CLASS(sc)->event = _elm_naviframe_smart_event;
+ ELM_WIDGET_CLASS(sc)->activate = _elm_naviframe_smart_activate;
ELM_CONTAINER_CLASS(sc)->content_set = _elm_naviframe_smart_content_set;
ELM_CONTAINER_CLASS(sc)->content_get = _elm_naviframe_smart_content_get;
case ELM_ACTIVATE_LEFT:
break;
+ case ELM_ACTIVATE_BACK:
+ type = ELM_ACCESS_ACTION_BACK;
+ break;
+
default:
break;
}
EAPI void
_elm_access_highlight_object_activate(Evas_Object *obj, Elm_Activate act)
{
- Evas_Object *highlight;
+ Evas_Object *ho;
- highlight = _access_highlight_object_get(obj);
- if (!highlight) return;
+ ho = _access_highlight_object_get(obj);
+ if (!ho) return;
- _elm_access_read_mode_set(EINA_FALSE);
+ switch (act)
+ {
+ case ELM_ACTIVATE_DEFAULT:
+ case ELM_ACTIVATE_UP:
+ case ELM_ACTIVATE_DOWN:
+ _elm_access_read_mode_set(EINA_FALSE);
+
+ if (!elm_object_focus_get(ho))
+ elm_object_focus_set(ho, EINA_TRUE);
- if (!elm_object_focus_get(highlight))
- elm_object_focus_set(highlight, EINA_TRUE);
+ elm_widget_activate(ho, act);
+ break;
+
+ case ELM_ACTIVATE_BACK:
+ elm_widget_activate(ho, act);
+ break;
+
+ default:
+ break;
+ }
- elm_widget_activate(highlight, act);
return;
}
break;
case ELM_ACCESS_ACTION_SCROLL:
+ _elm_access_highlight_object_scroll(obj, a->mouse_type, a->x, a->y);
break;
case ELM_ACCESS_ACTION_BACK:
{
Evas_Coord x;
Evas_Coord y;
+ unsigned int mouse_type; /* 0: mouse down
+ 1: mouse move
+ 2: mouse up */
Elm_Access_Action_Type action_type;
Eina_Bool highlight_cycle : 1;
ELM_SCROLLER_DATA_GET(obj, sd);
if ((elm_widget_disabled_get(obj)) ||
- (act == ELM_ACTIVATE_DEFAULT)) return EINA_FALSE;
+ (act == ELM_ACTIVATE_DEFAULT) ||
+ (act == ELM_ACTIVATE_BACK)) return EINA_FALSE;
sd->s_iface->content_pos_get(obj, &x, &y);
sd->s_iface->page_size_get(obj, &page_x, &page_y);
ELM_ACTIVATE_UP,
ELM_ACTIVATE_DOWN,
ELM_ACTIVATE_RIGHT,
- ELM_ACTIVATE_LEFT
+ ELM_ACTIVATE_LEFT,
+ ELM_ACTIVATE_BACK
} Elm_Activate;
/* Please, ALWAYS update the ELM_WIDGET_SMART_CLASS_INIT macro
void *event)
{
Elm_Access_Action_Info *a;
- Ecore_X_Atom atom_scroll;
+ Ecore_X_Atom atom_scroll, atom_back, atom_control_panel_open;
Elm_Win_Smart_Data *sd = data;
Ecore_X_Event_Client_Message *e = event;
if ((unsigned int)e->data.l[0] == sd->x.xwin)
{
atom_scroll = ecore_x_atom_get("_E_MOD_SCREEN_READER_ACTION_SCROLL_");
+ atom_back = ecore_x_atom_get("_E_MOD_SCREEN_READER_ACTION_BACK_");
+ atom_control_panel_open = ecore_x_atom_get("_E_MOD_SCREEN_READER_ACTION_CONTROL_PANEL_OPEN_");
if ((unsigned int)e->data.l[1] ==
ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT)
_elm_access_highlight_object_scroll(ELM_WIDGET_DATA(sd)->obj,
e->data.l[2], e->data.l[3], e->data.l[4]);
}
+ else if ((unsigned int)e->data.l[1] == atom_back)
+ {
+ _elm_access_highlight_object_activate
+ (ELM_WIDGET_DATA(sd)->obj, ELM_ACTIVATE_BACK);
+ }
+ else if ((unsigned int)e->data.l[1] == atom_control_panel_open)
+ {
+ }
}
}
return ECORE_CALLBACK_PASS_ON;