From: Thiep Ha Date: Fri, 30 Sep 2016 04:31:30 +0000 (+0900) Subject: text/entry: add more key controls for os x X-Git-Tag: accepted/tizen/3.0/ivi/20161011.043919~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=244b2974393a97b842c12aa8867802315318750c;p=platform%2Fupstream%2Fefl.git text/entry: add more key controls for os x In OS X, cmd-c,v, ... keys are used instead of ctrl-c,v..., this patch adapts these key handlings. Change-Id: Ia751eedf5f2180692f64ae2d43e262345f89ce4e Author: Thiep Ha Date: Fri Sep 23 17:51:37 2016 +0900 --- diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index e890fe7..63586cb 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -1502,6 +1502,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Edje_Real_Part *rp = ed->focused_part; Entry *en; Eina_Bool control, alt, shift; +#if defined(__APPLE__) && defined(__MACH__) + Eina_Bool super, altgr; +#endif Eina_Bool multiline; Eina_Bool cursor_changed; int old_cur_pos; @@ -1535,6 +1538,10 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, old_cur_pos = evas_textblock_cursor_pos_get(en->cursor); +#if defined(__APPLE__) && defined(__MACH__) + super = evas_key_modifier_is_set(ev->modifiers, "Super"); + altgr = evas_key_modifier_is_set(ev->modifiers, "AltGr"); +#endif control = evas_key_modifier_is_set(ev->modifiers, "Control"); alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); @@ -1649,8 +1656,12 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, //if (evas_textblock_cursor_char_prev(en->cursor)) if (evas_textblock_cursor_cluster_prev(en->cursor)) ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; +#if defined(__APPLE__) && defined(__MACH__) + if (altgr) evas_textblock_cursor_word_start(en->cursor); +#else /* If control is pressed, go to the start of the word */ if (control) evas_textblock_cursor_word_start(en->cursor); +#endif if (en->select_allow) { if (shift) _sel_extend(ed, en->cursor, rp->object, en); @@ -1686,7 +1697,11 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, } } /* If control is pressed, go to the end of the word */ +#if defined(__APPLE__) && defined(__MACH__) + if (altgr) evas_textblock_cursor_word_end(en->cursor); +#else if (control) evas_textblock_cursor_word_end(en->cursor); +#endif // TIZEN_ONLY(20150127): Add evas_textblock_cursor_cluster_* APIs. //if (evas_textblock_cursor_char_next(en->cursor)) if (evas_textblock_cursor_cluster_next(en->cursor)) @@ -1823,14 +1838,22 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, _edje_emit(ed, "cursor,changed,manual", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (!shift) && (!strcmp(ev->keyname, "v"))) +#else else if ((control) && (!shift) && (!strcmp(ev->keyname, "v"))) +#endif { _compose_seq_reset(en); _edje_emit(ed, "entry,paste,request", rp->part->name); _edje_emit(ed, "entry,paste,request,3", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (!strcmp(ev->keyname, "a"))) +#else else if ((control) && (!strcmp(ev->keyname, "a"))) +#endif { _compose_seq_reset(en); if (shift) @@ -1844,19 +1867,31 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (((!shift) && !strcmp(ev->keyname, "c")) || !strcmp(ev->key, "Insert"))) +#else else if ((control) && (((!shift) && !strcmp(ev->keyname, "c")) || !strcmp(ev->key, "Insert"))) +#endif { _compose_seq_reset(en); _edje_emit(ed, "entry,copy,notify", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (!shift) && ((!strcmp(ev->keyname, "x") || (!strcmp(ev->keyname, "m"))))) +#else else if ((control) && (!shift) && ((!strcmp(ev->keyname, "x") || (!strcmp(ev->keyname, "m"))))) +#endif { _compose_seq_reset(en); _edje_emit(ed, "entry,cut,notify", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (!strcmp(ev->keyname, "z"))) +#else else if ((control) && (!strcmp(ev->keyname, "z"))) +#endif { _compose_seq_reset(en); if (shift) @@ -1871,7 +1906,11 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, } ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } +#if defined(__APPLE__) && defined(__MACH__) + else if ((super) && (!shift) && (!strcmp(ev->keyname, "y"))) +#else else if ((control) && (!shift) && (!strcmp(ev->keyname, "y"))) +#endif { _compose_seq_reset(en); // redo