}
static void
+my_entry_bt_8(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = data;
+ elm_object_focus_set(en, EINA_TRUE);
+}
+
+static void
+my_entry_bt_9(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = data;
+ elm_object_focus_set(en, EINA_FALSE);
+}
+
+static void
changed_cb1(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Evas_Object *ck = data;
}
+static void
+entry_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ printf("Entry 'focused' callback called\n");
+}
+
+static void
+entry_unfocused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ printf("Entry 'unfocused' callback called\n");
+}
+
void
test_entry(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(en, "changed", entry_changed_cb, "changed");
evas_object_smart_callback_add(en, "changed,user", entry_changed_cb, "changed,user");
+ evas_object_smart_callback_add(en, "focused", entry_focused_cb, NULL);
+ evas_object_smart_callback_add(en, "unfocused", entry_unfocused_cb, NULL);
elm_box_pack_end(bx, en);
evas_object_show(en);
elm_object_focus_set(en, EINA_TRUE);
elm_object_focus_allow_set(bt, EINA_FALSE);
evas_object_show(bt);
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Focus");
+ evas_object_smart_callback_add(bt, "clicked", my_entry_bt_8, en);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Unfocus");
+ evas_object_smart_callback_add(bt, "clicked", my_entry_bt_9, en);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_show(bt);
+
bx3 = elm_box_add(win);
elm_box_horizontal_set(bx3, EINA_TRUE);
evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
elm_entry_input_panel_return_key_disabled_set(obj, return_key_disabled);
}
-EOLIAN static Eina_Bool
-_elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data *sd, Elm_Object_Item *item EINA_UNUSED)
+static void
+_elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd)
{
Evas_Object *top;
Eina_Bool top_is_win = EINA_FALSE;
- if (!sd->editable) return EINA_FALSE;
-
top = elm_widget_top_get(obj);
if (top && efl_isa(top, EFL_UI_WIN_CLASS))
top_is_win = EINA_TRUE;
- if (elm_widget_focus_get(obj))
+ if (elm_widget_focus_get(obj) && sd->editable)
{
evas_object_focus_set(sd->entry_edje, EINA_TRUE);
edje_object_signal_emit(sd->entry_edje, "elm,action,focus", "elm");
}
edje_object_signal_emit(sd->scr_edje, "validation,default", "elm");
}
+}
+
+EOLIAN static Eina_Bool
+_elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data *sd, Elm_Object_Item *item EINA_UNUSED)
+{
+ _elm_entry_focus_update(obj, sd);
return EINA_TRUE;
}
if (sd->editable == editable) return;
sd->editable = editable;
elm_obj_widget_theme_apply(obj);
+ _elm_entry_focus_update(obj, sd);
elm_drop_target_del(obj, sd->drop_format,
_dnd_enter_cb, NULL,