Commit Graph

107 Commits

Author SHA1 Message Date
Youngbok Shin 6b12ae1e03 edje: Reduce duplicated item obj creations and deletions.
Summary:
When text is changed, all of objects for item tag are deleted
and recreated. It is unnecessary work and can cause performance
issues. Actually, many of application developers wonder why
item provider callback functions are called every text changes.
@fix

Test Plan:
Run elementary_test -to "entry emoticon"
When you make a very little change on text,
36 emoticon objects are recreated.

Reviewers: woohyun, jaehwan, herdsman, tasn

Reviewed By: tasn

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3537
2016-02-02 10:22:09 +00:00
Carsten Haitzler 6b8351a0a0 efl: edje: make comments for something we need to break for efl2 not now
make notes about https://phab.enlightenment.org/D2980
2016-01-13 18:12:33 +09:00
Subodh Kumar 97b7964e8c Edje entry: Fix memory leak.
Summary:
Fix memory leak

If user or extra cursor is used, these should be free on
shutdown.

@fix

Test Plan: NA

Reviewers: tasn, herdsman

Subscribers: shilpasingh, cedric, jpeg

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D3550
2016-01-08 16:17:29 +00:00
Subodh Kumar 593c7eac02 Edje entry: Do not update cursor for non editable entry.
Summary:
Do not update cursor for non editable entry.

If entry is not editable there must not be any need to query tb cursor
geometry and run other codes related to it. This may improve some
performance of non-editable entry.

Test Plan: NA

Reviewers: tasn, herdsman, thiepha

Subscribers: shilpasingh, cedric, jpeg

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D3532
2016-01-05 14:30:21 +00:00
Subodh Kumar 7684cea226 Edje entry: Fix cursor position on mouse up and down
Summary:
Fix cursor position on mouse up/down

When mouse down/up over top and bottom  part textblock is not able to set the
char coordinate as it is not inside actual text, edje entry tries to manage it
but textblock has that handling. As a result the cursor jump to first char for
single line and at the last in the multiline last line.

So this patch fixes this and manage to keep the  the mouse coordinate inside
the textblock.

In mobile device this is not really acceptable when user taps over the entry
at some position and cursor jumps to  some arbitrary position.

@fix

Test Plan:
1. Elementary Test
2. Entry 3 (any entry)
3. Try to click little below or above the text in first entry
     single line.Observe cursor jumps to first position
4. Do as above for multiline entry (try to click at the last line little below)
observe cursor jumps to last char.

Reviewers: thiepha, herdsman, tasn

Subscribers: jpeg, tasn, cedric

Differential Revision: https://phab.enlightenment.org/D3257
2015-12-21 14:29:03 +00:00
Subodh Kumar 320733ecd7 Edje entry: Use markup text for password in preedit mode
Summary:
Use markup text for password in preedit mode

Problem is that when text comes in preedit mode
it is always markup text and when it is committed
to entry it got committed with markup tags along with
the original string, so for preedit mode password
should be filtered all markup to set the proper text.

@fix

Test Plan:
In preedit mode, enter any character say 'A'
preedit markup like <preedit>A</preedit>
will come in preedit changed callback

Result: Text is set as plain text like below
&lt;preedit&gt;A&lt;/preedit&gt;

Reviewers: thiepha, jihoon, herdsman, shilpasingh, tasn

Reviewed By: shilpasingh, tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2929
2015-12-03 16:04:08 +00:00
Shilpa Singh 648cef1db1 edje_entry: Fix crash on selection
Summary:
When text is selected, crash happens due to double free as rectangles are freed both in _sel_update
and _evas_textblock_selection_iterator_free hence removing free from _sel_update.

@fix T2910

Test Plan:
1. Launch elementary test
2. launch entry demo
3. select text

Reviewers: cedric, herdsman

Subscribers: jpeg

Maniphest Tasks: T2910

Differential Revision: https://phab.enlightenment.org/D3401
2015-12-03 12:53:00 +02:00
Daniel Hirt 5322575ba6 Edje entry: emit "selection,reset"
Adding a check for the selection range on extend/preextend.
If there is no range, then emit "selection,reset".
Expected handling on the theme end for this signal is to show the
cursor.

This improves cursor visuals, as it will show the cursor again once the
selection range ends up being 0.
2015-12-03 10:31:43 +02:00
Thiep Ha 7693925227 edje entry: return correct selection
Summary:
In entry, when selection_get function is called, selection is not
always returned the current selection.

Scenario:
- In select mode, entry has selection (e.g, by double click).
- When selection handler is moved, set the cursor the current coordinate
  with edje_object_part_text_cursor_pos_set() API.
- Edje emits "selection,changed" signal.
- Elementary gets current selection and stores it.
- Elementary does not get selection as visual selection (e.g, text is
   highlighted with "entry test", but the selection returned
   from edje is "entry").
- If we copy and then paste to the entry, the pasted text is not same as
   selected text.

Reason:
- In _edje_entry_cursor_coord_set function, if entry has selection, we only
  emit "selection,changed" signal without freeing en->selection.
- When _edje_entry_selection_get is called, we check the en->selection,
  since it is existed, we just return it which is not updated one.

This patch clears en->selection, so that it is updated at _selection_get,
and the updated selection is returned to caller.

@fix

Test Plan:
In mobile profile, open entry
- Right click, choose select, double click -> selection handlers are shown.
- Drag selection handlers to change selection.
- Right click, do copy.
- Right click, do paste.
- See the pasted text is not same as selection.

Reviewers: raster, tasn, herdsman

Subscribers: seoz, JackDanielZ, cedric

Differential Revision: https://phab.enlightenment.org/D2746
2015-11-26 10:11:54 +02:00
Subodh Kumar 95d398b5c8 edje entry: remove unreachable dead code
Summary:
Remove dead code

If anchor sel is not there, code inside
while can not execute.

Test Plan: NA

Reviewers: tasn, herdsman, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3190

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 10:42:35 -08:00
Subodh Kumar 9cc8c470be edje entry: do not create object if theme source is not available.
Summary:
Object not created if theme source is not available.

In many case we dont need or define all the
theme sources for entry, even if the sources are
null, edje object is being created.

Test Plan: NA

Reviewers: tasn, herdsman, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3199

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 10:42:35 -08:00
Subodh Kumar df190346a1 Edje entry: Make cursors to null after free
Summary:
Edje entry: Make cursors to null after free

To prevent any illegal access of cursors
can lead to crash

@fix

Test Plan: NA

Reviewers: tasn

Reviewed By: tasn

Subscribers: shilpasingh, cedric

Differential Revision: https://phab.enlightenment.org/D3093
2015-09-25 09:49:18 +01:00
Mykyta Biliavskyi 278b20954a Edje_entry: emit "cursor,changed,manual" for Home/End/PgUp/PgDown.
Summary:
The keys Home/End/PgUp/PgDown are changes the entry cursor
position in the same way as arrow keys. For unified behavior
callback "cursor,changed,manual", added emitting signal for
those keys events.

Reviewers: tasn, cedric, herdsman, thiepha

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3055
2015-09-22 15:12:47 +01:00
Youngbok Shin f210e42966 edje: Fix double free scenario caused by static pointer.
Summary:
The result of evas_object_textblock_cursor_content_get() API has to be cleaned
by outside.  _edje_entry_cursor_content_get() is calling free() inside of the
function for handle the result using static pointer. But, the caller of
_edje_entry_cursor_content_get() is already handling the result using free().
It can cause double free problem.

The bigger issue is in elementary. See elm_entry_cursor_content_get() API's
document. The document advice developers to free the result when it is done.

@fix

Test Plan: N/A

Reviewers: tasn, raster, woohyun

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2991
2015-08-27 11:06:23 +01:00
Mykyta Biliavskyi 41106fe20f Edje_Entry: check selection before the cursor position change.
Summary:
change position of the main textblock cursor
in depends of the selection is present. Change cursor position to
the start or end of selection only when selection is present.
@fix

Test Plan:
Press "Up" and "Down" arrow keys on selected and normal text.
For selected text: the entry cursor should be placed one line
   above or below selection block (in depends from pressed button).
For normal text: the entry cursor should be placed one line
   above or below of the current cursor position.

Reviewers: tasn, Hermet, herdsman

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2948
2015-08-20 11:31:27 +09:00
Subodh Kumar 46ff6f1172 Edje entry: Remove useless commented code
Summary:
After the commit D2904
this commented code and comments are not required

Test Plan: NA

Reviewers: tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2938
2015-08-11 12:10:59 +01:00
Subodh Kumar 20822f2008 Edje entry: Fix to delete selection when preedit status has not ended.
Summary:
Fix to delete selection when preedit status has not ended

In preedit mode when selection is made and input any letter,
there is duplicate character appeared because the selection
is cleared when commit happens so delete the selection in
preedit last stage.

@fix

Test Plan: Test in Tizen devices.

Reviewers: woohyun, id213sin, shilpasingh, tasn

Subscribers: rajeshps, cedric, govi

Differential Revision: https://phab.enlightenment.org/D2837
2015-08-05 11:02:53 +01:00
Tom Hacohen d1afa0e19b Edje entry: Clean up conditions a bit.
Merge two conditions to clean up the code a bit.
2015-08-04 15:35:50 +01:00
Subodh Kumar 4284f11ca9 Edje entry: Make filter logic consistent across all input methods
Summary:
When commit string comes from key_down text filter is applied before deleting
the range but when commit string comes from imf filter is applied after deleting
the range. Moreover when format is prepended range is deleted before applying
insert filter. Please check the _edje_key_down_cb and
_edje_entry_imf_event_commit_cb  routines.

@fix

Test Plan: Tested in Tizen device

Reviewers: herdsman, thiepha, shilpasingh, raster, tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2904
2015-08-04 15:35:17 +01:00
Jee-Yong Um 2b29f4dfbf edje: add "mask_flags" instruction for "part" block
Summary:
Elementary widgets dealing with Evas Events usually mask event_flags with
EVAS_EVENT_FLAG_ON_HOLD, to show that this event is already handled.
However, widget like Elm_Button, it does not handle EVAS_CALLBACK_MOUSE_DOWN directly,
but it handles Edje_Signal instead, so there's no chance to mask event_flags.
Developers can block event propagation by putting rectangle the very last part of EDC,
but this instruction can help the case making elementary widget with only Edje_Signal handling.
This is not required essentially, so please check the necessity of this function.

Reviewers: Hermet, cedric

Reviewed By: cedric

Subscribers: cedric, Hermet

Differential Revision: https://phab.enlightenment.org/D2764

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-06-25 17:21:09 +02:00
Carsten Haitzler 8f0b8a9060 edje entry - also filter 0x7f (DEL) char on input as it's invalid entry
@fix
2015-06-12 17:40:23 +09:00
shilpa.singh 0dd76d7ea8 Edje_entry: Fix control + (x,a,y,z,m,c) not working issue.
Summary:
When caps lock is "On" and we press control + (x,a,y,z,m,c) none of
these operations work issue fix.

@fix

Test Plan:
1. Caps lock On
2. Input some text
3. Press ctrl+a, ctrl+c etc:-
4. Select, copy, cut etc:- operations does not work

Reviewers: tasn

Subscribers: raster, rajeshps, govi, poornima.srinivasan, navnbeet, subodh6129, cedric

Differential Revision: https://phab.enlightenment.org/D2633
2015-06-10 13:04:11 +01:00
Mike Blumenkrantz 172a0ccf0c edje: reformat all C files
this has been unreadable for years due to the french tabber.
2015-06-08 14:43:00 -04:00
shilpa.singh a867caf260 Edje: Add have_selection check to avoid unnecessary function calls
Summary:
Check for have_selection flag when left/arrow keys are pressed to jump
across the selected text, to avoid unnecessary function calls of
comparision, copy of sel_start and sel_end pointers.

Test Plan: Press left and right arrow keys on selected and normal text.

Reviewers: herdsman, tasn

Subscribers: SubodhKumar, navnbeet, cedric

Differential Revision: https://phab.enlightenment.org/D2621
2015-06-03 16:39:42 +01:00
Jihoon Kim 196e909275 Fix issue wrong surrounding text returns when there is selection area
@fix

Change-Id: Iff89b396c1a69d2879b9f710eb41e58e9d377b87
2015-05-29 15:07:46 +09:00
Subodh Kumar bb13b45e80 edje entry: Improves anchors handling
Summary:
When edje entry is not inside the canvas view port, anchors update is aborted to improve the scrolling performance
in case of large number of anchors.

@feature

Test Plan:
1. Should have many entries inside scroller.
2. Each entry should contain large number of anchors.
3. Scroll it, scrolling is not smooth.

Reviewers: seoz, cedric, thiepha, woohyun, tasn, raster, shilpasingh, herdsman, JackDanielZ

Reviewed By: shilpasingh

Subscribers: poornima.srinivasan, rajeshps, cedric, govi

Differential Revision: https://phab.enlightenment.org/D2108
2015-05-15 14:19:31 +09:00
WooHyun Jung 1051328256 edje: edje_entry - remove dead code 2015-02-02 19:12:42 +09:00
Chris Michael ee31af90cc edje: Remove dead code
Summary: This removes the commented out dead code block from
9cdb8aaf9b

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-12 11:44:06 -05:00
Chris Michael 9cdb8aaf9b edje: Fix Coverity CID1261437
Summary: Coverity reports idential code for different branches here.
Not sure WHY that was done, but I commented out the existing if
statement for posterity.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-09 15:28:55 -05:00
Thiep Ha c30303d7e8 edje entry: improve selection performance
Summary:
The selection performance is slow if we select large chunk of text.
This is caused by many rectangles created and deleted.
This patch provides a way to improve it by combine selection rectangles
of line in middle into one rectangles (i.e, if we have N lines,
the selection rectangle for lines 2 to N-1 will be combined into one.)

@feature

Reviewers: raster, cedric, tasn

Subscribers: herdsman, woohyun, cedric

Differential Revision: https://phab.enlightenment.org/D1508
2014-11-26 11:29:09 +00:00
Jihoon Kim 59e0d9712d Fix bug ecore_imf_context_cursor_position_set was not called when cursor was moved by ECORE_IMF_CALLBACK_SELECTION_SET
@fix
2014-11-13 15:36:46 +09:00
artem.popov a5e3e0d0d4 edje: fix edje_object_part_text_item_list_get and edje_object_part_text_item_geometry_get
Summary:
There is copy-paste bug, when _anchors_get works in the same way like
_items_get. edje_object_part_text_item_list_get and
edje_object_part_text_item_geometry_get didn't work.

@fix

Reviewers: seoz, Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1641

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2014-11-05 00:15:52 +01:00
Jihoon Kim 000f5fee84 ecore_imf: Add ecore_imf_context_bidi_direction_set/get API
Some Input Methods want to know the bidi direction (LTR/RTL) at the current cursor position.
2014-09-23 10:18:35 +09:00
Jihoon Kim c8ac5486d8 edje: fix build warning in _edje_entry_input_hint_set/get
Thanks for reporting, jeyzu
2014-09-14 15:22:03 +09:00
Jihoon Kim 715da43d3a Add edje_object_part_text_input_hint_set/get API
Sets or get the input hint which allows input methods to fine-tune their behavior.
2014-09-01 19:01:54 +09:00
Carsten Haitzler bc6eb8fcec edje entry - fix format appending with just empty strings
this fixes CID 1039647 - it caught a real bug. we were not skipping
out on an empty + or - push/pop format fomamnt if it had nothing
there. not actually something people do - but possible. fix!
2014-08-14 19:32:45 +09:00
Carsten Haitzler 8a7e70705c fix possible resource leak in edje entry - coverity spotted
this should fix CID 1193228
2014-08-13 15:11:06 +09:00
Jaehwan Kim 7e5d2606cc edje: Add dpi feature.
Summary:
This dpi is used to get the scale for each collection.
If each collection has a described dpi, it calculates a proper scale
based on the dpi and dpi which is described in the collection.

@feature

Test Plan:
If add dpi to collection of edc, the edje will save the value as the dpi of the collection.
For example, if the dpi of your device is 100, you just set dpi: 100 in the collection of edc.
If the edj is loaded in another device(dpi is 200), it will scaled 2 times.
It is possible that the described dpi of application and theme are different.
In that case, application and theme have a different scale.
It makes the edj that made in different environment works in one device.

Reviewers: seoz, zmike, JackDanielZ, Hermet, woohyun, cedric, raster

Reviewed By: raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1190
2014-07-24 14:50:25 +09:00
Carsten Haitzler c3f0a0c59d fix behavior of edje entry to match other toolkit entires
this fixes T1229 in the part about the cursor behavior when you press
updown/left/right when a selection is there. @fix
2014-05-15 17:43:00 +09:00
zmike 564cd48a24 edje entry no longer selects none with unimplemented ctrl+w key press 2014-05-06 09:58:11 -04:00
zmike 8ae4810e65 edje entry no longer prints control codes
this has been an annoyance for way too long which has required various hacks to suppress
2014-05-06 09:58:11 -04:00
Jihoon Kim a9cfcf8dde Fix dereference null return value
CID 1193210
CID 1193211
2014-03-20 08:44:56 +09:00
Youngbok Shin 72c8b04e59 edje/entry: fix to not emit "changed" signal in unnecessary cases of password mode.
Summary:
When text is hidden by password character, "changed" signal should be emitted.
But, even if there is no visible text, the signal was emitted.

@fix

Reviewers: woohyun, tasn, cedric

Reviewed By: cedric

CC: cedric

Differential Revision: https://phab.enlightenment.org/D604

Signed-off-by: Cedric BAIL <cedric.bail@samsung.com>
2014-03-07 14:43:27 +09:00
Jihoon Kim 71f296e171 Edje entry: fix bug preedit text is committed in the next entry when Tab key is pressed.
Key events which ecore_imf_context_filter_event function returns EINA_TRUE should be not propagated.

@fix
2014-03-06 11:17:34 +09:00
Amitesh Singh 257607cc69 edje: add support of last input entered in password mode to be always visible in entry.
@feature

Requirement: Last input entered in password mode should be always visible in
entry. e.g. **a -> ***b.

Reviewers: cedric, raster, seoz

Reviewed By: cedric

CC: cedric

Differential Revision: https://phab.enlightenment.org/D589

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-03-03 09:34:31 -03:00
Daniel Hirt 08a6954904 Edje/entry: Add propagation handling in mouse_out for link anchors
Summary:
Link anchors are set to allow event propagation. In some cases, this
might lead to unwanted results in entry.
Adding a flag to event_flags allows to control this in Elementary.
One example that this fixes is having wrong mouse cursor handling when
having the mouse out of the link anchor, back to the entry parent
(in this case, additional handling in els_cursor.c is required so this
event is ignored if event_flag is set with EVAS_EVENT_FLAG_ON_HOLD.
Fixes T878.

Reviewers: tasn

CC: cedric

Maniphest Tasks: T878

Differential Revision: https://phab.enlightenment.org/D561
2014-02-17 21:18:19 +09:00
Tom Hacohen 211845c885 Edje entry: Enable allow_set for DEFAULT select mode.
We need to be able to disable selection even when the mode is default.
A good use case is thumb scrolling on a desktop.
2014-02-07 14:21:26 +00:00
Tom Hacohen c061e76927 Edje entry: always finish selection when mouse is up.
Even when the event is held. This actually needs some better fixing.
2014-02-07 14:21:26 +00:00
Jihoon Kim a759462078 edje: call imf reset before selecting text area 2014-02-01 10:32:53 +09:00
Tom Hacohen d9ef2b1ace Edje entry: Fix memory corruption (of by one in allocation).
This fixes T867.
2014-01-28 10:10:05 +00:00