From 505577b8368dd47959e37788a2fd4b5ceab5edc0 Mon Sep 17 00:00:00 2001 From: raster Date: Fri, 26 Mar 2010 04:42:39 +0000 Subject: [PATCH] password mode - dont allow selections git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@47466 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/edje_entry.c | 113 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 84 insertions(+), 29 deletions(-) diff --git a/src/lib/edje_entry.c b/src/lib/edje_entry.c index 902099f..6f400cd 100644 --- a/src/lib/edje_entry.c +++ b/src/lib/edje_entry.c @@ -1055,10 +1055,16 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v { if (multiline) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_up(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } _edje_emit(ed, "entry,key,up", rp->part->name); @@ -1067,29 +1073,47 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v { if (multiline) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_down(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } _edje_emit(ed, "entry,key,down", rp->part->name); } else if (!strcmp(ev->key, "Left")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_back(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,left", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Right")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_next(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,right", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } @@ -1143,25 +1167,37 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v } else if (!strcmp(ev->key, "Home")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } if ((control) && (multiline)) _curs_start(en->cursor, rp->object, en); else _curs_lin_start(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,home", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "End")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } if ((control) && (multiline)) _curs_end(en->cursor, rp->object, en); else _curs_lin_end(en->cursor, rp->object, en); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,end", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } @@ -1232,19 +1268,31 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v } else if (!strcmp(ev->key, "Prior")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_jump_line_by(en->cursor, rp->object, en, -10); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,pgup", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Next")) { - if (shift) _sel_start(en->cursor, rp->object, en); - else _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } _curs_jump_line_by(en->cursor, rp->object, en, 10); - if (shift) _sel_extend(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } _edje_emit(ed, "entry,key,pgdn", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } @@ -1451,7 +1499,10 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS { en->selecting = EINA_TRUE; _sel_clear(en->cursor, rp->object, en); - _sel_start(en->cursor, rp->object, en); + if (en->select_allow) + { + _sel_start(en->cursor, rp->object, en); + } } } if (evas_textblock_cursor_compare(tc, en->cursor)) @@ -1591,10 +1642,13 @@ _edje_part_mouse_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS { _sel_extend(en->cursor, rp->object, en); } - if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) != 0) - _sel_enable(en->cursor, rp->object, en); - if (en->have_selection) - _sel_update(en->cursor, rp->object, en); + if (en->select_allow) + { + if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) != 0) + _sel_enable(en->cursor, rp->object, en); + if (en->have_selection) + _sel_update(en->cursor, rp->object, en); + } if (evas_textblock_cursor_compare(tc, en->cursor)) _edje_emit(rp->edje, "cursor,changed", rp->part->name); evas_textblock_cursor_free(tc); @@ -1689,6 +1743,7 @@ _edje_entry_real_part_init(Edje_Real_Part *rp) if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) { + en->select_allow = 0; if ((rp->chosen_description) && (rp->chosen_description->text.repch)) evas_object_textblock_replace_char_set(rp->object, rp->chosen_description->text.repch); -- 2.7.4