From: Enlightenment C. <no...@cv...> - 2007-11-21 22:20:23
|
Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk Dir : e17/libs/etk/src/lib Modified Files: etk_entry.c Log Message: Added Ecore_IMF_Evas. Removed Evas dependency from Ecore_IMF, that was requested by Ewl developers in order to be able to integrate Ecore_IMF on it. Added Ecore_IMF_Evas, a library with helper functions to use Ecore_IMF together with Evas. Now everybody should be happy. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -3 -r1.46 -r1.47 --- etk_entry.c 21 Nov 2007 01:33:50 -0000 1.46 +++ etk_entry.c 21 Nov 2007 22:20:16 -0000 1.47 @@ -10,6 +10,7 @@ #include <Ecore.h> #include <Ecore_Evas.h> +#include <Ecore_IMF_Evas.h> #include "etk_editable.h" #include "etk_event.h" @@ -557,16 +558,31 @@ Etk_Entry *entry; Etk_Widget *internal_entry; Evas *evas; + const char *ctx_id; + const Ecore_IMF_Context_Info *ctx_info; if (!(internal_entry = ETK_WIDGET(object)) || !(evas = etk_widget_toplevel_evas_get(internal_entry))) return ETK_TRUE; if (!(entry = ETK_ENTRY(etk_object_data_get(object, "_Etk_Entry::Entry")))) return ETK_TRUE; - entry->imf_context = ecore_imf_context_add(ecore_imf_context_default_id_get()); + ctx_id = ecore_imf_context_default_id_get(); + ctx_info = ecore_imf_context_info_by_id_get(ctx_id); + if (!ctx_info->canvas_type || + strcmp(ctx_info->canvas_type, "evas") == 0) + entry->imf_context = ecore_imf_context_add(ctx_id); + else + { + ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); + if (ctx_id) + entry->imf_context = ecore_imf_context_add(ctx_id); + } + if (entry->imf_context) { - ecore_imf_context_client_window_set(entry->imf_context, evas); + ecore_imf_context_client_window_set(entry->imf_context, + ecore_evas_window_get(ecore_evas_ecore_evas_get(evas))); + ecore_imf_context_client_canvas_set(entry->imf_context, evas); ecore_imf_context_retrieve_surrounding_callback_set(entry->imf_context, _etk_entry_imf_retrieve_surrounding_cb, entry); ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, @@ -815,9 +831,16 @@ if (!(entry = ETK_ENTRY(data))) return; - if (entry->imf_context && - ecore_imf_context_filter_event(entry->imf_context, EVAS_CALLBACK_MOUSE_IN, event_info)) - return; + if (entry->imf_context) + { + Ecore_IMF_Event_Mouse_In ev; + + ecore_imf_evas_event_mouse_in_wrap(event_info, &ev); + if (ecore_imf_context_filter_event(entry->imf_context, + ECORE_IMF_EVENT_MOUSE_IN, + (Ecore_IMF_Event *) &ev)) + return; + } if (!entry->pointer_set) { @@ -834,9 +857,16 @@ if (!(entry = ETK_ENTRY(data))) return; - if (entry->imf_context && - ecore_imf_context_filter_event(entry->imf_context, EVAS_CALLBACK_MOUSE_OUT, event_info)) - return; + if (entry->imf_context) + { + Ecore_IMF_Event_Mouse_Out ev; + + ecore_imf_evas_event_mouse_out_wrap(event_info, &ev); + if (ecore_imf_context_filter_event(entry->imf_context, + ECORE_IMF_EVENT_MOUSE_OUT, + (Ecore_IMF_Event *) &ev)) + return; + } if (entry->pointer_set) { @@ -856,9 +886,16 @@ if (!(entry = ETK_ENTRY(data))) return; - if (entry->imf_context && - ecore_imf_context_filter_event(entry->imf_context, EVAS_CALLBACK_MOUSE_DOWN, event_info)) - return; + if (entry->imf_context) + { + Ecore_IMF_Event_Mouse_Down ev; + + ecore_imf_evas_event_mouse_down_wrap(event_info, &ev); + if (ecore_imf_context_filter_event(entry->imf_context, + ECORE_IMF_EVENT_MOUSE_DOWN, + (Ecore_IMF_Event *) &ev)) + return; + } etk_event_mouse_down_wrap(ETK_WIDGET(entry), event_info, &event); evas_object_geometry_get(entry->editable_object, &ox, &oy, NULL, NULL); @@ -901,9 +938,16 @@ if (!(entry = ETK_ENTRY(data))) return; - if (entry->imf_context && - ecore_imf_context_filter_event(entry->imf_context, EVAS_CALLBACK_MOUSE_UP, event_info)) - return; + if (entry->imf_context) + { + Ecore_IMF_Event_Mouse_Up ev; + + ecore_imf_evas_event_mouse_up_wrap(event_info, &ev); + if (ecore_imf_context_filter_event(entry->imf_context, + ECORE_IMF_EVENT_MOUSE_UP, + (Ecore_IMF_Event *) &ev)) + return; + } etk_event_mouse_up_wrap(ETK_WIDGET(entry), event_info, &event); if (event.button == 1) @@ -924,9 +968,16 @@ if (!(entry = ETK_ENTRY(data))) return; - if (entry->imf_context && - ecore_imf_context_filter_event(entry->imf_context, EVAS_CALLBACK_MOUSE_MOVE, event_info)) - return; + if (entry->imf_context) + { + Ecore_IMF_Event_Mouse_Move ev; + + ecore_imf_evas_event_mouse_move_wrap(event_info, &ev); + if (ecore_imf_context_filter_event(entry->imf_context, + ECORE_IMF_EVENT_MOUSE_MOVE, + (Ecore_IMF_Event *) &ev)) + return; + } if (entry->selection_dragging) { |
From: Enlightenment C. <no...@cv...> - 2007-11-21 22:20:49
|
Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk Dir : e17/libs/etk Modified Files: configure.in Log Message: Added Ecore_IMF_Evas. Removed Evas dependency from Ecore_IMF, that was requested by Ewl developers in order to be able to integrate Ecore_IMF on it. Added Ecore_IMF_Evas, a library with helper functions to use Ecore_IMF together with Evas. Now everybody should be happy. =================================================================== RCS file: /cvs/e/e17/libs/etk/configure.in,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- configure.in 19 Nov 2007 18:32:11 -0000 1.34 +++ configure.in 21 Nov 2007 22:20:16 -0000 1.35 @@ -92,10 +92,10 @@ ;; esac -requirements="evas ecore ecore-file ecore-evas ecore-imf edje" +requirements="evas ecore ecore-file ecore-evas ecore-imf ecore-imf-evas edje" PKG_CHECK_MODULES(EVAS, [evas >= 0.9.9]) -PKG_CHECK_MODULES(ECORE, [ecore >= 0.9.9 ecore-file >= 0.9.9 ecore-evas >= 0.9.9 ecore-imf >= 0.9.9]) +PKG_CHECK_MODULES(ECORE, [ecore >= 0.9.9 ecore-file >= 0.9.9 ecore-evas >= 0.9.9 ecore-imf >= 0.9.9 ecore-imf-evas >= 0.9.9]) PKG_CHECK_MODULES(EDJE, [edje >= 0.5.0]) ##################################################################### |
From: Enlightenment C. <no...@cv...> - 2007-11-22 14:55:48
|
Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk Dir : e17/libs/etk/src/lib Modified Files: etk_entry.c Log Message: Do not crash when no input method context module is installed. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -3 -r1.47 -r1.48 --- etk_entry.c 21 Nov 2007 22:20:16 -0000 1.47 +++ etk_entry.c 22 Nov 2007 14:55:43 -0000 1.48 @@ -567,16 +567,21 @@ return ETK_TRUE; ctx_id = ecore_imf_context_default_id_get(); - ctx_info = ecore_imf_context_info_by_id_get(ctx_id); - if (!ctx_info->canvas_type || - strcmp(ctx_info->canvas_type, "evas") == 0) - entry->imf_context = ecore_imf_context_add(ctx_id); - else + if (ctx_id) { - ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); - if (ctx_id) - entry->imf_context = ecore_imf_context_add(ctx_id); + ctx_info = ecore_imf_context_info_by_id_get(ctx_id); + if (!ctx_info->canvas_type || + strcmp(ctx_info->canvas_type, "evas") == 0) + entry->imf_context = ecore_imf_context_add(ctx_id); + else + { + ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); + if (ctx_id) + entry->imf_context = ecore_imf_context_add(ctx_id); + } } + else + entry->imf_context = NULL; if (entry->imf_context) { |
From: Enlightenment C. <no...@cv...> - 2007-12-12 23:15:04
|
Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk Dir : e17/libs/etk/src/lib Modified Files: etk_entry.c Log Message: Deleting Ecore_IMF event handlers on _e_entry_smart_del. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -3 -r1.49 -r1.50 --- etk_entry.c 12 Dec 2007 11:23:43 -0000 1.49 +++ etk_entry.c 12 Dec 2007 19:00:48 -0000 1.50 @@ -595,7 +595,7 @@ entry->imf_ee_handler_commit = ecore_event_handler_add( ECORE_IMF_EVENT_COMMIT, _etk_entry_imf_event_commit_cb, entry); entry->imf_ee_handler_delete = ecore_event_handler_add( - ECORE_IMF_EVENT_DELETE_SURROUNDIND, /* XXX: typo in original lib? */ + ECORE_IMF_EVENT_DELETE_SURROUNDING, _etk_entry_imf_event_delete_surrounding_cb, entry); ecore_imf_context_input_mode_set(entry->imf_context, |
From: Enlightenment C. <no...@cv...> - 2007-12-13 02:18:24
|
Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk Dir : e17/libs/etk/src/lib Modified Files: etk_entry.c Log Message: Proper handle Ecore_IMF commit event. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- etk_entry.c 12 Dec 2007 19:00:48 -0000 1.50 +++ etk_entry.c 13 Dec 2007 00:09:37 -0000 1.51 @@ -1265,6 +1265,11 @@ { Etk_Entry *entry; Ecore_IMF_Event_Commit *ev = event; + Evas_Object *editable; + int cursor_pos, selection_pos; + int start_pos, end_pos; + Etk_Bool selecting; + Etk_Bool changed = ETK_FALSE; if (!(entry = ETK_ENTRY(data))) return 1; @@ -1272,7 +1277,20 @@ if (entry->imf_context != ev->ctx) return 1; - etk_entry_text_set(entry, ev->str); + editable = entry->editable_object; + cursor_pos = etk_editable_cursor_pos_get(editable); + selection_pos = etk_editable_selection_pos_get(editable); + start_pos = ETK_MIN(cursor_pos, selection_pos); + end_pos = ETK_MAX(cursor_pos, selection_pos); + selecting = (start_pos != end_pos); + + if (selecting) + changed |= etk_editable_delete(editable, start_pos, end_pos); + changed |= etk_editable_insert(editable, start_pos, ev->str); + + if (changed) + etk_signal_emit(ETK_ENTRY_TEXT_CHANGED_SIGNAL, ETK_OBJECT(entry)); + return 0; } |