Commit Graph

54 Commits

Author SHA1 Message Date
ChunEon Park ac5f55d3d1 edje - use Eina_Bool
SVN revision: 76163
2012-09-05 05:38:01 +00:00
SHILPA ONKAR SINGH 510cada94b From: SHILPA ONKAR SINGH <shilpa.singh@samsung.com>
Subject: [E-devel] [Edje]: Bug Fix: Edje draggable jumps when external
events is used.

Please find attached bug fix patch for edje draggable jump issue when
external event area is used.

Bug: When an external event area is used for edje draggable and when
after mouse move if immediate mouse down
is done then the draggable jumps back to its original position. 

Analysis: In  _edje_mouse_down_signal_cb  When an external event area
is set  i.e., when rp->events_to is set.  
tmp.x value is set to 0, need_reset is set to 1 and also
_edje_recalc_do is called including emitting "drag" signal. this code
is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag->down.x and drag->down.y needs to be set
which is being set below and tmp value need not be reset to 
0 as tmp value is calculated in mouse move based on drag->down.x and
drag->down.y values.
2. need_reset is already set in mouse up hence need not be set in
mouse down again.
3. edje_recalc_do is the function which actually causes the movement
of draggable based on tmp value hence need not be called in mouse down.
because of the above code race condition happens and as tmp value is
being set to 0 and need reset is also enabled the draggable jumps back
to where it
started.
4. "drag": is sent even before "drag,start" [ should not /need not be
sent in mouse down ]
All the above code is added only when external event area is set and
the above code is not even related to whether external event is set or
not.

Solution: When an external event area is set directly equating rp =
rp->events_to and sending mouse,down would be enough, as down.x and
down.y is set below
including sending drag,start. Recalc_do should be called only in mouse
move as its responsible for movement including setting tmp value.
need_reset is already set in mouse up. drag should not be sent from
mouse down.


Change Description:
Bug Fix: Edje Draggable jumps when mouse down is done immediately
after mouse move when an external 
event area is used.

demo edc pasted below to reproduce the issue.
Please find attached bug fix patch for edje draggable jump issue when external event area is used.

Bug: When an external event area is used for edje draggable and when after mouse move if immediate mouse down
is done then the draggable jumps back to its original position. 

Analysis: In  _edje_mouse_down_signal_cb  When an external event area is set  i.e., when rp->events_to is set.  
tmp.x value is set to 0, need_reset is set to 1 and also _edje_recalc_do is called including emitting "drag" signal. this code is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag->down.x and drag->down.y needs to be set which is being set below and tmp value need not be reset to 
0 as tmp value is calculated in mouse move based on drag->down.x and drag->down.y values.
2. need_reset is already set in mouse up hence need not be set in mouse down again.
3. edje_recalc_do is the function which actually causes the movement of draggable based on tmp value hence need not be called in mouse down.
because of the above code race condition happens and as tmp value is being set to 0 and need reset is also enabled the draggable jumps back to where it
started.
4. "drag": is sent even before "drag,start" [ should not /need not be sent in mouse down ]
All the above code is added only when external event area is set and the above code is not even related to whether external event is set or not.

Solution: When an external event area is set directly equating rp = rp->events_to and sending mouse,down would be enough, as down.x and down.y is set below
including sending drag,start. Recalc_do should be called only in mouse move as its responsible for movement including setting tmp value. need_reset is already set in mouse up. drag should not be sent from mouse down.


Change Description:
Bug Fix: Edje Draggable jumps when mouse down is done immediately after mouse move when an external 
event area is used.

demo edc pasted below to reproduce the issue.
Please find attached bug fix patch for edje draggable jump issue when
external event area is used.

Bug: When an external event area is used for edje draggable and when
after mouse move if immediate mouse down
is done then the draggable jumps back to its original position. 

Analysis: In  _edje_mouse_down_signal_cb  When an external event area
is set  i.e., when rp->events_to is set.  
tmp.x value is set to 0, need_reset is set to 1 and also
_edje_recalc_do is called including emitting "drag" signal. this code
is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag->down.x and drag->down.y needs to be set
which is being set below and tmp value need not be reset to 
0 as tmp value is calculated in mouse move based on drag->down.x and
drag->down.y values.
2. need_reset is already set in mouse up hence need not be set in
mouse down again.
3. edje_recalc_do is the function which actually causes the movement
of draggable based on tmp value hence need not be called in mouse down.
because of the above code race condition happens and as tmp value is
being set to 0 and need reset is also enabled the draggable jumps back
to where it
started.
4. "drag": is sent even before "drag,start" [ should not /need not be
sent in mouse down ]
All the above code is added only when external event area is set and
the above code is not even related to whether external event is set or
not.

Solution: When an external event area is set directly equating rp =
rp->events_to and sending mouse,down would be enough, as down.x and
down.y is set below
including sending drag,start. Recalc_do should be called only in mouse
move as its responsible for movement including setting tmp value.
need_reset is already set in mouse up. drag should not be sent from
mouse down.


Change Description:
Bug Fix: Edje Draggable jumps when mouse down is done immediately
after mouse move when an external 
event area is used.

demo edc pasted below to reproduce the issue.

Please find attached bug fix patch for edje draggable jump issue when external event area is used.
  
  Bug: When an external event area is used for edje draggable and when after mouse move if immediate mouse down
is done then the draggable jumps back to its original position. 
  
  Analysis: In  _edje_mouse_down_signal_cb  When an external event area is set  i.e., when rp->events_to is set.  
  tmp.x value is set to 0, need_reset is set to 1 and also _edje_recalc_do is called including emitting "drag" signal. this code is 
unnecessary/buggy  and instead it causes the jump.
  1. In mouse down only drag->down.x and drag->down.y needs to be set which is being set below and tmp value need not be reset to 
0 as tmp value is calculated in mouse move based on drag->down.x and drag->down.y values.
  2. need_reset is already set in mouse up hence need not be set in mouse down again.
  3. edje_recalc_do is the function which actually causes the movement of draggable based on tmp value hence need not be called in mouse down.
  because of the above code race condition happens and as tmp value is being set to 0 and need reset is also enabled the draggable jumps back to where it
started.
  4. "drag": is sent even before "drag,start" [ should not /need not be sent in mouse down ]
All the above code is added only when external event area is set and the above code is not even related to whether external event is set or not.
  
  Solution: When an external event area is set directly equating rp = rp->events_to and sending mouse,down would be enough, as down.x and down.y is set below
including sending drag,start. Recalc_do should be called only in mouse move as its responsible for movement including setting tmp value. need_reset is already set in mouse up. drag should not be sent from mouse down.
  
  
  Change Description:
Bug Fix: Edje Draggable jumps when mouse down is done immediately after mouse move when an external 
event area is used.



SVN revision: 71277
2012-05-21 10:08:18 +00:00
Carsten Haitzler 2264bfe0b7 wo... this turned out to be much more of a pain. minmul now works -
allows us to multiple a minimim size explicitly for min size calc so
we can do things like have content slide open/closed properly.



SVN revision: 67197
2012-01-14 02:29:13 +00:00
Carsten Haitzler cf137667f4 use unused instead of dead code to get rid of warnings
SVN revision: 56165
2011-01-16 03:56:41 +00:00
Carsten Haitzler c928276a8f fix clicked when on hold set.
SVN revision: 54757
2010-11-21 06:28:13 +00:00
Lucas De Marchi 0a4617ae38 FORMATTING
* Remove vim modelines:
 find . -name '*.[chx]' -exec sed -i '/\/\*$/ {N;N;/ \* vim:ts/d}' \{\} \;
 find . -name '*.[chx]' -exec sed -i '/\/[\*\/] *vim:/d' \{\} \;

* Remove leading blank lines:
 find . -name '*.[cxh]' -exec sed -i '/./,$!d'

If you use vim, use this in your .vimrc:
set ts=8 sw=3 sts=8 expandtab cino=>5n-3f0^-2{2(0W1st0



SVN revision: 50816
2010-08-04 16:57:32 +00:00
Christopher Michael e42fd65b80 Fix use of __UNUSED__ and fix some formatting.
SVN revision: 50437
2010-07-22 18:42:44 +00:00
Cedric BAIL 73ac5cdc95 * edje: remove warning due to API change in Ecore.
SVN revision: 49830
2010-06-24 16:16:50 +00:00
Cedric BAIL 3eaea2b9fa * edje: Fix naming for amalgamation and make static functions
that should.


SVN revision: 46394
2010-02-23 15:55:04 +00:00
Cedric BAIL 51de26862a * edje: Add more focus event in edje. A start for a focus layout work.
SVN revision: 46389
2010-02-23 13:39:19 +00:00
Sebastian Dransfeld 3a0af1226e make clang happy
SVN revision: 45194
2010-01-15 19:57:17 +00:00
Cedric BAIL b32c9a3eae * edje: Add Fixed Point Math support to Edje.
You can try it by passing --enable-fixed-point to the configure. It
	will produce an ABI/API compatible Edje library that use internally
	Eina_F32p32 instead of double. It will load Eina_F32p32 instead of
	double from eet file (thanks to eet ability to convert them on the
	fly), so edje file are compatible between fixed point and floating
	point version.

	This patch touch almost all internal calc of Edje, I did test it with
	elementary_test, enlightenment and all my test apps, but it could
	certainly break some of your preferred Edje file. If you see any
	unexpected behaviour please report them to me as soon as possible.

	Note: For devs, I put few macros in edje_private.h that should now
	be used when doing calc in Edje, please use them so that Fixed Point
	doesn't break in the futur.


SVN revision: 44323
2009-12-09 15:44:54 +00:00
Cedric BAIL 8170df024a * edje: Oops, fix drag.
SVN revision: 41691
2009-08-11 14:55:26 +00:00
Cedric BAIL d16bbd3953 * edje: Make Edje_Real_Part_Drag a pointer. Win 100 bytes per states.
SVN revision: 41685
2009-08-11 12:47:00 +00:00
Cedric BAIL 7047c5f561 * edje: Cleanup drag part of Edje_Real_Part.
SVN revision: 41682
2009-08-11 10:17:14 +00:00
Cedric BAIL 7f9a41a824 * edje: Add a cache for _edje_part_recalc_single.
WARNING: THIS CAN CAUSE RENDERING GLITCH AND OTHER WEIRD BEHAVIOUR WITH
	YOUR EDJE FILE. PLEASE REPORT ANY ALIEN STUFF.

	Note: This patch cache the result of _edje_part_recalc_single, until
	any relative part are moved, the object is resized or some property
	are changed (like during text set or color class set).

	Note: Be carefull when you call edje_object_size_min_restricted_calc,
	it's really an inderect heavy user of _edje_part_recalc_single and
	I wasn't able to bring it down.

	Note: This patch use more RAM, around 480 bytes per Edje state, so I
	don't recommand using it on a Desktop with a lot of CPU power.


SVN revision: 41663
2009-08-10 15:16:51 +00:00
Gustavo Sverzut Barbieri f53febde32 Edje postponed calculations.
This makes use of new Evas_Smart_Class calculate() callback to
postpone calculations until render time, possible saving lots of
calculations to happen.

It is another try, with Cedric's changes to force recalculations when
requried (ie: just before doing some edje_object_*_get()), let's see
if this one solve found issues.



SVN revision: 37620
2008-11-14 11:06:15 +00:00
Carsten Haitzler 68794e198b also use looptime
SVN revision: 37394
2008-11-02 02:43:43 +00:00
Cedric BAIL fa66dbf40a Remove Evas list from Edje and use Eina instead.
SVN revision: 36961
2008-10-22 11:34:42 +00:00
Carsten Haitzler 154b2a5a94 printf--
SVN revision: 36905
2008-10-21 05:21:11 +00:00
Carsten Haitzler 485e1c4218 fix drag event objects to work.
SVN revision: 36559
2008-10-10 01:46:02 +00:00
Gustavo Sverzut Barbieri fb44db2211 Revert edje_smart_calculate_v4_r2, it breaks e17 shelf resize.
Not ready yet, reverting...



SVN revision: 36031
2008-09-17 01:50:16 +00:00
Gustavo Sverzut Barbieri d044a0245a More svn:ignore
SVN revision: 36026
2008-09-16 19:44:20 +00:00
doursse c5623c01b3 reorganize header files inclusion. Fix some problems when compiling on Windows
SVN revision: 34768
2008-06-07 10:06:14 +00:00
Caio Marcelo de Oliveira Filho f674fc975b Fix mouse_in/out flag checking.
If we have event_flags and they match any bit in ignore_flags, return.


SVN revision: 34185
2008-04-04 00:07:07 +00:00
Carsten Haitzler 13809fe5bd oops fix logic. done.
SVN revision: 34175
2008-04-03 18:22:22 +00:00
Carsten Haitzler 48deca9592 1. cedrics patches for speedups. they breka nothing.
2. fix mouse in/out and other event flags stuff again.


SVN revision: 34174
2008-04-03 18:18:36 +00:00
Caio Marcelo de Oliveira Filho ea56c61eba Edje: adding support for ignore_flags.
Parts can choose to ignore Events with certain flags in event_flags. The default value is
to accept all events. The syntax for this is specifying in the part:

    ignore_flags: ON_HOLD;

I've tried to update Edje_Edit bits also.


SVN revision: 34170
2008-04-01 21:33:17 +00:00
Carsten Haitzler 368f148fef use hold event and emit hold,on and hold,off
SVN revision: 34161
2008-03-31 21:38:51 +00:00
doursse 974152be16 remove trailingspaces
SVN revision: 31657
2007-09-08 18:31:56 +00:00
Carsten Haitzler e0b17ee4ee 1. removed mosue_events 0 on swallows - as this now changes behavior. normalise
2. gustavo's patch.


SVN revision: 29352
2007-04-04 12:51:51 +00:00
metrics 11a8412ea3 Fix an issue where the button click is not correctly tracked.
SVN revision: 27507
2006-12-18 08:50:25 +00:00
Carsten Haitzler b10d8cce4a dragables are back (broken them accidentally)
SVN revision: 18189
2005-11-01 09:53:16 +00:00
Carsten Haitzler a080215a72 remove excess calcs.
add faster missed job reaper timer


SVN revision: 18183
2005-11-01 04:10:01 +00:00
tsauerbeck ecdb983827 cleanup. formatting and stuff
SVN revision: 15908
2005-07-26 19:27:02 +00:00
Carsten Haitzler 24e1406536 pavel's patch. :)
SVN revision: 15905
2005-07-26 13:59:03 +00:00
Carsten Haitzler 9fd651fc53 use new extended event info
SVN revision: 12459
2004-12-14 03:24:32 +00:00
Carsten Haitzler 96c09fd010 handle double/triple click again
SVN revision: 12397
2004-12-07 13:31:15 +00:00
Carsten Haitzler d229b9f061 actually detect x...
SVN revision: 12396
2004-12-07 12:38:55 +00:00
tsauerbeck 42a26cb3db cleaned up autotools setup some more
SVN revision: 12080
2004-10-30 11:47:23 +00:00
Carsten Haitzler 3821f74e99 and.... edje_cc can take small code snippets in script{} areas and compile
them, include them int eh edje.eet and edje can run them. all i have to do
now is actually give the small scripts an api worht talking about


SVN revision: 9514
2004-03-28 05:26:17 +00:00
Carsten Haitzler e069710f42 init drag step on load
freeze/thaw imbalance! fix. :(


SVN revision: 9365
2004-03-16 08:38:51 +00:00
Carsten Haitzler 1bb9260fea remove lots of warnings
SVN revision: 7662
2003-10-19 02:11:06 +00:00
Carsten Haitzler 00d83df7eb match changes made to evas.
SVN revision: 7645
2003-10-18 03:34:54 +00:00
Carsten Haitzler c396a44fd5 oops - swallow went bad.
fix edje drag


SVN revision: 7444
2003-09-12 08:09:47 +00:00
Carsten Haitzler 4c51ac32d8 IMMENSELY evil!
akuma no code desu!

there are a LOT of paths that lead to calling external callbacks froma
pgoram thaty will invalidate the loop or code just after that call-
causing... segv's and all sort sof fun goodies. i've blocks/locks off a lot
of them... i hope i haven't missed any - but it's likely. tread carefully
within callbacks!


SVN revision: 7375
2003-08-26 00:16:49 +00:00
Carsten Haitzler d3ad6fedd9 the basics of dragables work. signals are generated properly. there's calls
to set/get dragable size relative to its confie and is value relative to its
cofine, query what directiosn a dragable can be dragged. you shoudl be able
to do scrollbars - except scroll arrows internally in edje making the
scrollbar move.


SVN revision: 7324
2003-08-15 13:35:25 +00:00
Carsten Haitzler 97700a07e9 make ending programs safe while iterating
SVN revision: 7314
2003-08-13 11:03:20 +00:00
Carsten Haitzler 426a67340f build cross-compiled version. edje on ipaq's :)
SVN revision: 7126
2003-07-10 13:34:04 +00:00
Carsten Haitzler 1b587fd598 work has been done while i've been away. i just need to put this in cvs. many
fixem's have been fixed. text parts work fully now, ALONG with all their
respective effect modes, fits, alignments and "chopping". a few more api
calls have been added and cleaned up. you'll need to update eet too for this
to work.


SVN revision: 7113
2003-07-07 07:55:18 +00:00