Sel *sel;
sel = en->sel->data;
- en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg);
- en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg);
if (sel->obj_bg) evas_object_del(sel->obj_bg);
if (sel->obj_fg) evas_object_del(sel->obj_fg);
+
+ if (en->rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_BLOCK_HANDLE)
+ {
+ evas_object_hide(en->block_handler_top);
+ evas_object_hide(en->block_handler_btm);
+ }
free(sel);
en->sel = eina_list_remove_list(en->sel, en->sel);
}
evas_object_pass_events_set(ob, EINA_TRUE);
evas_object_show(ob);
sel->obj_bg = ob;
- en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg);
+ _edje_subobj_register(en->rp->edje, sel->obj_bg);
ob = edje_object_add(en->rp->edje->base.evas);
- edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2);
+ if (en->rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_BLOCK_HANDLE)
+ edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source6);
+ else
+ edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2);
evas_object_smart_member_add(ob, smart);
evas_object_stack_above(ob, o);
evas_object_clip_set(ob, clip);
evas_object_stack_above(en->cursor_fg, rp->object);
evas_object_clip_set(en->cursor_fg, evas_object_clip_get(rp->object));
evas_object_pass_events_set(en->cursor_fg, EINA_TRUE);
- rp->edje->subobjs = eina_list_append(rp->edje->subobjs, en->cursor_fg);
+ _edje_subobj_register(en->rp->edje, en->cursor_fg);
+ if (en->rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_BLOCK_HANDLE)
+ {
+ const char *bh_position;
+ Evas_Object *ob;
+ Evas_Object *smart;
+ smart = evas_object_smart_parent_get(rp->object);
+
+ evas_object_hide(en->cursor_fg);
+ ob = edje_object_add(en->rp->edje->base.evas);
+ edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2);
+ bh_position = edje_object_data_get(ob, "position");
+ if ((!bh_position) || (bh_position[0] == 0)) bh_position = "BOTH";
+ if (ob) evas_object_del(ob);
+
+ if ((!strcmp(bh_position, "TOP")) || (!strcmp(bh_position, "BOTH")))
+ {
+ ob = edje_object_add(en->rp->edje->base.evas);
+ edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source3);
+ evas_object_layer_set(ob, EVAS_LAYER_MAX - 2);
+ en->block_handler_top = ob;
+ en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, en->block_handler_top);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_DOWN, _edje_entry_top_handler_mouse_down_cb, en->rp);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_UP, _edje_entry_top_handler_mouse_up_cb, en->rp);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_MOVE, _edje_entry_top_handler_mouse_move_cb, en->rp);
+ }
+
+ if ((!strcmp(bh_position, "BOTTOM")) || (!strcmp(bh_position, "BOTH")))
+ {
+ ob = edje_object_add(en->rp->edje->base.evas);
+ edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2);
+ evas_object_layer_set(ob, EVAS_LAYER_MAX - 2);
+ en->block_handler_btm = ob;
+ en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, en->block_handler_btm);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_DOWN, _edje_entry_bottom_handler_mouse_down_cb, en->rp);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_UP, _edje_entry_bottom_handler_mouse_up_cb, en->rp);
+ evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_MOVE, _edje_entry_bottom_handler_mouse_move_cb, en->rp);
+ }
+ }
+
if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE)
{
evas_object_show(en->cursor_bg);
ecore_imf_context_input_mode_set(en->imf_context,
rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ?
ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL);
+
+ if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD)
+ {
+ ecore_imf_context_input_panel_language_set(en->imf_context, ECORE_IMF_INPUT_PANEL_LANG_ALPHABET);
+ }
#endif
}
+ #ifdef HAVE_ECORE_IMF
done:
+ #endif
en->cursor = (Evas_Textblock_Cursor *)evas_object_textblock_cursor_get(rp->object);
+
+ edje_object_signal_callback_add(rp->edje->obj, "mouse,down,1,double", rp->part->name, _edje_entry_mouse_double_clicked, rp);
}
void