diff --git a/configure.in b/configure.in index 8722d7560..0897ba44e 100644 --- a/configure.in +++ b/configure.in @@ -183,35 +183,37 @@ AC_MSG_RESULT([$e_cv_enable_files]) PKG_CHECK_MODULES(E, [ evas ecore + ecore-x ecore-evas - ecore-file - ecore-ipc ecore-con + ecore-ipc ecore-job - ecore-imf - ecore-imf-evas - edje + ecore-file eet >= 1.0.1 - embryo + edje efreet efreet-mime ]) +requirements_e="evas ecore ecore-x ecore-evas ecore-con ecore-ipc ecore-job ecore-file eet edje efreet efreet-mime" + +PKG_CHECK_MODULES(ECORE_IMF, [ + ecore-imf + ecore-imf-evas +], [ + have_ecore_imf="yes" + AC_DEFINE(HAVE_ECORE_IMF, 1, [Ecore IMF support]) +], [ have_ecore_imf="no" ] +) PKG_CHECK_MODULES(ECORE_TXT, [ ecore-txt ], [ have_temp="yes" - have_battery="yes" # This test will succeed as these modules are also checked before PKG_CHECK_MODULES(TEMPERATURE, [ ecore ecore-file ]) - PKG_CHECK_MODULES(BATTERY, [ - ecore - ecore-file - ecore-con - ]) ], [ have_temp="no"]) AM_CONDITIONAL(HAVE_TEMPERATURE, test x$have_temp = "xyes") AM_CONDITIONAL(HAVE_BATTERY, test x$have_bat = "xyes") @@ -224,6 +226,7 @@ AM_CONDITIONAL(HAVE_EDBUS, test x$have_edbus = "xyes") define_e_dbus="" if test x$have_edbus = "xyes"; then define_e_dbus="-DHAVE_EDBUS" + requirements_e=$requirements_e" edbus" if test x$have_ehal = "xyes"; then AC_DEFINE(HAVE_EDBUS, 1, [E_Dbus support]) fi @@ -236,6 +239,7 @@ e_configflags="-DUSE_E_CONFIG_H "$define_e_dbus" " AC_SUBST(e_libs) AC_SUBST(e_cflags) AC_SUBST(e_configflags) +AC_SUBST(requirements_e) profile="SLOW_PC" AC_ARG_WITH(profile, diff --git a/src/bin/e.h b/src/bin/e.h index 4aaa35d94..bbe1392d9 100644 --- a/src/bin/e.h +++ b/src/bin/e.h @@ -64,14 +64,13 @@ #include #include #include +#include +#include #include #include #include #include -#include #include -#include -#include #include #include #include diff --git a/src/bin/e_entry.c b/src/bin/e_entry.c index f19d068f7..1e9f07291 100644 --- a/src/bin/e_entry.c +++ b/src/bin/e_entry.c @@ -3,8 +3,10 @@ */ #include "e.h" +#ifdef HAVE_ECORE_IMF #include #include +#endif typedef struct _E_Entry_Smart_Data E_Entry_Smart_Data; @@ -14,7 +16,9 @@ struct _E_Entry_Smart_Data Evas_Object *editable_object; E_Menu *popup; Ecore_Event_Handler *selection_handler; +#ifdef HAVE_ECORE_IMF Ecore_IMF_Context *imf_context; +#endif Ecore_Event_Handler *imf_ee_commit_handler; Ecore_Event_Handler *imf_ee_delete_handler; @@ -54,9 +58,11 @@ static void _e_entry_cb_copy(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_entry_cb_paste(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_entry_cb_select_all(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_entry_cb_delete(void *data, E_Menu *m, E_Menu_Item *mi); +#ifdef HAVE_ECORE_IMF static int _e_entry_cb_imf_retrieve_surrounding(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos); static int _e_entry_cb_imf_event_commit(void *data, int type, void *event); static int _e_entry_cb_imf_event_delete_surrounding(void *data, int type, void *event); +#endif /* local subsystem globals */ static Evas_Smart *_e_entry_smart = NULL; @@ -181,10 +187,12 @@ e_entry_password_set(Evas_Object *entry, int password_mode) if ((!entry) || (!(sd = evas_object_smart_data_get(entry)))) return; e_editable_password_set(sd->editable_object, password_mode); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) ecore_imf_context_input_mode_set(sd->imf_context, password_mode ? ECORE_IMF_INPUT_MODE_FULL & ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL); +#endif } /** @@ -228,22 +236,26 @@ e_entry_focus(Evas_Object *entry) if (!sd->selection_dragging) { e_editable_cursor_move_to_end(sd->editable_object); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_cursor_position_set(sd->imf_context, e_editable_cursor_pos_get(sd->editable_object)); } +#endif e_editable_selection_move_to_end(sd->editable_object); } if (sd->enabled) e_editable_cursor_show(sd->editable_object); e_editable_selection_show(sd->editable_object); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_focus_in(sd->imf_context); } +#endif sd->focused = 1; } @@ -268,11 +280,13 @@ e_entry_unfocus(Evas_Object *entry) edje_object_signal_emit(sd->entry_object, "e,state,unfocused", "e"); e_editable_cursor_hide(sd->editable_object); e_editable_selection_hide(sd->editable_object); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_focus_out(sd->imf_context); } +#endif sd->focused = 0; } @@ -332,6 +346,7 @@ _e_entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if ((!obj) || (!(sd = evas_object_smart_data_get(obj)))) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { Ecore_IMF_Event_Key_Down ev; @@ -342,6 +357,7 @@ _e_entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) (Ecore_IMF_Event *) &ev)) return; } +#endif if (_e_entry_emacs_keybindings) _e_entry_key_down_emacs(obj, event_info); @@ -358,6 +374,7 @@ _e_entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if ((!obj) || (!(sd = evas_object_smart_data_get(obj)))) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { Ecore_IMF_Event_Key_Up ev; @@ -368,6 +385,7 @@ _e_entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) (Ecore_IMF_Event *) &ev)) return; } +#endif } /* Called when the entry object is pressed by the mouse */ @@ -384,6 +402,7 @@ _e_entry_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if (!(event = event_info)) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { Ecore_IMF_Event_Mouse_Down ev; @@ -394,6 +413,7 @@ _e_entry_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) (Ecore_IMF_Event *) &ev)) return; } +#endif evas_object_geometry_get(sd->editable_object, &ox, &oy, NULL, NULL); pos = e_editable_pos_get_from_coords(sd->editable_object, @@ -527,12 +547,14 @@ _e_entry_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) e_util_evas_fake_mouse_up_later(e, event->button); } +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_cursor_position_set(sd->imf_context, e_editable_cursor_pos_get(sd->editable_object)); } +#endif } /* Called when the entry object is released by the mouse */ @@ -544,6 +566,7 @@ _e_entry_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if ((!obj) || (!(sd = evas_object_smart_data_get(obj)))) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { Ecore_IMF_Event_Mouse_Up ev; @@ -554,6 +577,7 @@ _e_entry_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) (Ecore_IMF_Event *) &ev)) return; } +#endif if (sd->selection_dragging) { @@ -576,6 +600,7 @@ _e_entry_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) if (!(event = event_info)) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { Ecore_IMF_Event_Mouse_Move ev; @@ -586,6 +611,7 @@ _e_entry_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) (Ecore_IMF_Event *) &ev)) return; } +#endif if (sd->selection_dragging) { @@ -594,12 +620,14 @@ _e_entry_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) event->cur.canvas.x - ox, event->cur.canvas.y - oy); e_editable_cursor_pos_set(sd->editable_object, pos); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_cursor_position_set(sd->imf_context, pos); } +#endif } } @@ -831,12 +859,14 @@ _e_entry_key_down_windows(Evas_Object *entry, Evas_Event_Key_Down *event) changed |= e_editable_insert(editable, start_pos, event->string); } +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_cursor_position_set(sd->imf_context, e_editable_cursor_pos_get(editable)); } +#endif if (changed) evas_object_smart_callback_call(entry, "changed", NULL); @@ -982,12 +1012,14 @@ _e_entry_key_down_emacs(Evas_Object *entry, Evas_Event_Key_Down *event) (event->string[0] >= 0x20 && event->string[0] != 0x7f))) changed = e_editable_insert(editable, cursor_pos, event->string); +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_imf_context_reset(sd->imf_context); ecore_imf_context_cursor_position_set(sd->imf_context, e_editable_cursor_pos_get(editable)); } +#endif if (changed) evas_object_smart_callback_call(entry, "changed", NULL); @@ -1005,7 +1037,9 @@ _e_entry_smart_add(Evas_Object *object) Evas_Object *o; int cw, ch; const char *ctx_id; +#ifdef HAVE_ECORE_IMF const Ecore_IMF_Context_Info *ctx_info; +#endif if ((!object) || !(evas = evas_object_evas_get(object))) return; @@ -1015,6 +1049,7 @@ _e_entry_smart_add(Evas_Object *object) evas_object_smart_data_set(object, sd); +#ifdef HAVE_ECORE_IMF ctx_id = ecore_imf_context_default_id_get(); if (ctx_id) { @@ -1049,6 +1084,7 @@ _e_entry_smart_add(Evas_Object *object) _e_entry_cb_imf_event_delete_surrounding, sd); } +#endif sd->enabled = 1; sd->focused = 0; @@ -1095,12 +1131,14 @@ _e_entry_smart_del(Evas_Object *object) if ((!object) || !(sd = evas_object_smart_data_get(object))) return; +#ifdef HAVE_ECORE_IMF if (sd->imf_context) { ecore_event_handler_del(sd->imf_ee_commit_handler); ecore_event_handler_del(sd->imf_ee_delete_handler); ecore_imf_context_del(sd->imf_context); } +#endif evas_object_event_callback_del(object, EVAS_CALLBACK_KEY_DOWN, _e_entry_key_down_cb); @@ -1330,6 +1368,7 @@ _e_entry_cb_delete(void *data, E_Menu *m, E_Menu_Item *mi) } } +#ifdef HAVE_ECORE_IMF static int _e_entry_cb_imf_retrieve_surrounding(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos) { @@ -1407,3 +1446,4 @@ _e_entry_cb_imf_event_delete_surrounding(void *data, int type, void *event) return 0; } +#endif diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 16b116113..df36cfa4d 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -313,8 +313,10 @@ main(int argc, char **argv) "Perhaps you are out of memory?")); exit(-1); } +#ifdef HAVE_ECORE_IMF ecore_imf_init(); _e_main_shutdown_push(ecore_imf_shutdown); +#endif // FIXME: SEGV's on shutdown if fm2 windows up - disable for now. // _e_main_shutdown_push(ecore_shutdown); ecore_job_init(); diff --git a/src/modules/temperature/e_mod_main.c b/src/modules/temperature/e_mod_main.c index de8169e0d..dd6f9857f 100644 --- a/src/modules/temperature/e_mod_main.c +++ b/src/modules/temperature/e_mod_main.c @@ -4,6 +4,8 @@ #include "e.h" #include "e_mod_main.h" +#include + #ifdef __FreeBSD__ #include #include