/** @internal */
EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
+// TIZEN_ONLY(20171107): support a tizen_keyrouter interface
+EAPI void ecore_wl2_display_sync(Ecore_Wl2_Display *display);
+EAPI Eina_Bool ecore_wl2_window_keygrab_set(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int not_mod EINA_UNUSED, int priority EINA_UNUSED, Ecore_Wl2_Window_Keygrab_Mode grab_mode);
+EAPI Eina_Bool ecore_wl2_window_keygrab_unset(Ecore_Wl2_Window *win, const char *key, int mod EINA_UNUSED, int any_mod EINA_UNUSED);
+//
+EAPI Eina_List *ecore_wl2_window_keygrab_list_set(Ecore_Wl2_Window *win, Eina_List *infos);
+EAPI Eina_List *ecore_wl2_window_keygrab_list_unset(Ecore_Wl2_Window *win, Eina_List *infos);
+
+// TIZEN_ONLY(20171107): add ecore_wl2_window_input_get() EAPI
+EAPI Ecore_Wl2_Input *ecore_wl2_window_input_get(Ecore_Wl2_Window *win);
+//
+// TIZEN_ONLY(20200326): add ecore_wl2_window_pointer/keyboard_get() EAPI
+/** @internal */
+EAPI Ecore_Wl2_Input *ecore_wl2_window_pointer_get(Ecore_Wl2_Window *win);
+/** @internal */
+EAPI Ecore_Wl2_Input *ecore_wl2_window_keyboard_get(Ecore_Wl2_Window *win);
+//
+// TIZEN_ONLY(20171114): support a pointer warp
+EAPI Eina_Bool ecore_wl2_window_pointer_warp(Ecore_Wl2_Window *win, int x, int y);
+//
+
//TIZEN_ONLY(20171108): add a new API to ecore_wl2_sync
/** @internal */
EAPI void ecore_wl2_sync(void);
elm_object_text_set(sd->ent, buf);
}
+//TIZEN_ONLY(20200403): update genlist item when special value text is changed
+static void
+_update_genlist_item_text(Elm_Spinner_Data *sd, double value)
+{
+ if (!sd->genlist || !sd->genlist_items) return;
+ Eina_List *l;
+ Elm_Object_Item *item = NULL;
+ Elm_Spinner_Item_Data* sp_item_data = NULL;
+
+ EINA_LIST_FOREACH(sd->genlist_items, l, item)
+ {
+ sp_item_data = elm_object_item_data_get(item);
+ if (sp_item_data && fabs(sp_item_data->value - value) < FLT_EPSILON)
+ {
+ elm_genlist_item_fields_update(item, "elm.text", ELM_GENLIST_ITEM_FIELD_TEXT);
+ break;
+ }
+ }
+}
+//
+
//TIZEN_ONLY(20191210): List Spinner feature
static char*
_get_genlist_item_buf(Elm_Spinner_Data *sd, double val)
evas_object_smart_callback_del_full(sd->genlist, "unfocused",
_genlist_unfocused_cb, obj);
- evas_object_smart_callback_del(sd->genlist, "item,aligned,detected", _genlist_item_aligned_cb);
+ evas_object_smart_callback_del(sd->genlist, "aligned,item,detected", _genlist_item_aligned_cb);
evas_object_smart_callback_del(sd->genlist, "realized", _genlist_realized_cb);
evas_object_smart_callback_del(sd->genlist, "scroll,anim,start", _genlist_scroll_anim_start_cb);
evas_object_smart_callback_del(sd->genlist, "scroll,anim,stop", _genlist_scroll_anim_stop_cb);
_genlist_hide(obj);
- evas_object_geometry_get(sd->genlist, &x, &y, NULL, &h);
- y_center = y + h / 2;
- sd->aligned_item = elm_genlist_at_xy_item_get(sd->genlist, x, y_center, NULL);
+ //TIZEN_ONLY(20200403): update aligned item only if scrolling is in progress
+ if (sd->scrolling)
+ //
+ {
+ evas_object_geometry_get(sd->genlist, &x, &y, NULL, &h);
+ y_center = y + h / 2;
+ sd->aligned_item = elm_genlist_at_xy_item_get(sd->genlist, x, y_center, NULL);
+ }
_genlist_item_value_apply(obj);
sd->scrolling = EINA_FALSE;//anim_stop_cb not comes when genlist is hidden while scrolling is in progress
sd->scrolling = EINA_FALSE;
evas_object_smart_callback_add
- (sd->genlist, "item,aligned,detected", _genlist_item_aligned_cb, obj);
+ (sd->genlist, "aligned,item,detected", _genlist_item_aligned_cb, obj);
evas_object_smart_callback_add
(sd->genlist, "scroll,anim,start", _genlist_scroll_anim_start_cb, sd);
evas_object_smart_callback_add
}
}
- if (sd->genlist_visible)
- elm_genlist_item_show(sd->aligned_item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+ //TIZEN_ONLY(20200403): Update aligned item if spinner value is reset
+ elm_genlist_item_show(sd->aligned_item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+ //
evas_object_smart_callback_add
(sd->genlist, "realized", _genlist_realized_cb, sd);
EOLIAN static double
_elm_spinner_efl_ui_range_display_range_value_get(const Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd)
{
+ //TIZEN_ONLY(20200403): For value_get while scroll in progress
+ if (sd->list_spinner)
+ {
+ if (sd->genlist && sd->scrolling)
+ {
+ Evas_Coord x, y, h, y_center;
+ evas_object_geometry_get(sd->genlist, &x, &y, NULL, &h);
+ y_center = y + h / 2;
+ Elm_Object_Item* center_item = elm_genlist_at_xy_item_get(sd->genlist, x, y_center, NULL);
+ if (center_item)
+ {
+ sd->aligned_item = center_item;
+ _genlist_item_value_apply(obj);
+ }
+ }
+ }
+ //
return sd->val;
}
eina_stringshare_replace(&sv->label, label);
_label_write(obj);
+ //TIZEN_ONLY(20200403): update genlist item when special value text is changed
+ if (sd->list_spinner)
+ _update_genlist_item_text(sd, value);
+ //
return;
}
sd->special_values = eina_list_append(sd->special_values, sv);
_label_write(obj);
+ //TIZEN_ONLY(20200403): update genlist item when special value text is changed
+ if (sd->list_spinner)
+ _update_genlist_item_text(sd, value);
+ //
}
EAPI void
// TIZEN_ONLY(20191216) : offset of bottom margin
#define CIRCLE_BOTTOM_OFFSET 100
//
+//TIZEN_ONLY(20200325): offset for spinner genlist
+#define SPINNER_GENLIST_GAP 10
+//
#define ERR_ABORT(_msg) \
do { \
evas_object_show(target->item->proxy);
}
+ //TIZEN_ONLY(20200325): Give signal to spinner when new item comes on center
+ if (sd->spinner_genlist)
+ {
+ if (ELM_RECTS_INTERSECT(GL_IT(target)->scrl_x, iy + ih / 2 - SPINNER_GENLIST_GAP,
+ GL_IT(target)->w, SPINNER_GENLIST_GAP * 2, ox, g_center, 1, 1))
+ {
+ if (!sd->spinner_genlist_center_item || (sd->spinner_genlist_center_item && sd->spinner_genlist_center_item != target))
+ {
+ evas_object_smart_callback_call(WIDGET(target), "spinner,aligned,item,change", NULL);
+ sd->spinner_genlist_center_item = target;
+ }
+ }
+ }
+ //
if (!sd->on_hold &&
ELM_RECTS_INTERSECT(GL_IT(target)->scrl_x, GL_IT(target)->scrl_y,
GL_IT(target)->w, GL_IT(target)->h,
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
- //TIZEN_ONLY(20190109): Show item in spinner when calc is completed
- const char* str = edje_object_data_get(elm_layout_edje_get(psd->wsd->obj), "spinner_genlist");
- //
+
//FIXME: This is for optimizing genlist calculation after
// genlist sizing eval properly.
if (ow <= 1) return;
(oh > 0) &&
(cvh > 1) && //Since default height of viewport is 1, correctly calculated viewport height is bigger than 1.
(!psd->wsd->loop_v || (psd->wsd->loop_v && !psd->wsd->queue)) && //psd->wsd->loop_v indicates if looping is enabled in vertical dir
- (!str || (str && !psd->wsd->queue)))
+ //TIZEN_ONLY(20200403): Check if genlist belongs to spinner
+ (!psd->wsd->spinner_genlist || (psd->wsd->spinner_genlist && !psd->wsd->queue)))
+ //
{
Evas_Coord x, y, w, h;
Elm_Gen_Item *it = psd->wsd->show_item;
if (wsd->scroll_item_align_enable && sd->aligned_item)
elm_genlist_item_show(EO_OBJ(sd->aligned_item), ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+ //TIZEN_ONLY(20200403): Check if genlist belongs to spinner
+ const char* str = edje_object_data_get(elm_layout_edje_get(obj), "spinner_genlist");
+ if (str) sd->spinner_genlist = EINA_TRUE;
+ //
+
return int_ret;
}
//TIZEN_ONLY(20171114) genlist: enhance accessibility scroll & highlight
Elm_Gen_Item *atspi_item_to_highlight;
//
+ //TIZEN_ONLY(20190719): Send signal when new item comes on center
+ Elm_Gen_Item *atspi_item_in_center;
+ //
// TIZEN_ONLY(20180326) : Atspi: enhance finding next and prev item on screen's edge
int scroll_delta_y_backup;
//
//TIZEN_ONLY(20161104) : Accessibility : synchronized highlight of atspi and item align feature for wearable profile
Elm_Gen_Item *currently_highlighted_item;
//
+ //TIZEN_ONLY(20200403): Give signal to spinner when new item comes on center
+ Elm_Gen_Item *spinner_genlist_center_item;
+ //
///
Elm_Genlist_Item_Scrollto_Type focus_scrollto_type;
Eina_Bool bottom_margin_enabled : 1;
Eina_Bool unhighlighted : 1;
Eina_Bool on_clear : 1;
+ //TIZEN_ONLY(20200403): Check if genlist belongs to spinner
+ Eina_Bool spinner_genlist : 1;
+ //
// TIZEN_ONLY(20170718) - Add new variable for solve item select issue.
Elm_Gen_Item *selecting_item;