<?xml version="1.0"?>
<statsTarget><link>http://cia.vc/stats/project/e/edje</link><counters><counter name="forever" lastEventTime="1338037659" firstEventTime="1265492595">1057</counter><counter name="lastMonth" lastEventTime="1335156062" firstEventTime="1333491767">18</counter><counter name="thisMonth" lastEventTime="1338037659" firstEventTime="1335956836">36</counter><counter name="lastWeek" lastEventTime="1337513925" firstEventTime="1336973450">13</counter><counter name="yesterday" lastEventTime="1338037659" firstEventTime="1338037215">2</counter><counter name="thisWeek" lastEventTime="1338037659" firstEventTime="1337591439">10</counter></counters><metadata><item name="subtitle"><value type="text/plain">Graphical layout and animation library</value></item><item name="description"><value type="text/plain">Edje is a complex graphical design and layout library based on Evas that
provides an abstraction layer between the application code and the
interface, while allowing extremely flexible dynamic layouts and
animations.

In more popular terms, Edje makes every application that uses it
"skinable" .

    "Edje is an attempt to find a middleground between theming and
    programming without turning the theme itself into just yet another
    program."

    -- Carsten Haitzler (The Rasterman)


It's purpose is to be a sequel to "Ebits" which to date has serviced
the needs of Enlightenment development for version 0.17. The original
design parameters under which Ebits came about were a lot more
restricted than the resulting use of them, thus Edje was born.

Edje is a more complex layout engine compared to Ebits. It doesn't
pretend to do containing and regular layout like a widget set. It
still inherits the more simplistic layout ideas behind Ebits, but it
now does them a lot more cleanly, allowing for easy expansion, and the
ability to cover much more ground than Ebits ever could. For the
purposes of Enlightenment 0.17, Edje should serve all the purposes of
creating visual elements (borders of windows, scrollbars, etc.) and
allow the designer the ability to animate, layout and control the look
and feel of any program using Edje as its basic GUI constructor. This
library allows for multiple collections of Layouts in one file,
sharing the same image database and thus allowing a whole theme to be
conveniently packaged into 1 file and shipped around.

Edje, unlike Ebits, separates the layout and behavior logic. Edje
files ship with an image database, used by all the parts in all the
collections to source graphical data. It has a directory of logical
part names pointing to the part collection entry ID in the file (thus
allowing for multiple logical names to point to the same part
collection, allowing for the sharing of data between display
elements). Each part collection consists of a list of visual parts, as
well as a list of programs. A program is a conditionally run program
that if a particular event occurs (a button is pressed, a mouse enters
or leaves a part) will trigger an action that may affect other
parts. In this way a part collection can be "programmed" via its file
as to hilight buttons when the mouse passes over them or show hidden
parts when a button is clicked somewhere etc. The actions performed in
changing from one state to another are also allowed to transition over
a period of time, allowing animation.

This separation and simplistic event driven style of programming can
produce almost any look and feel one could want for basic visual
elements. Anything more complex is likely the domain of an application
or widget set that may use Edje as a convenient way of being able to
configure parts of the display.
</value></item><item name="links-filter"><value type="text/plain">None</value></item><item name="title"><value type="text/plain">Edje</value></item><item name="url"><value type="text/plain">http://trac.enlightenment.org/e/wiki/Edje</value></item><item name="related-filter"><value type="text/plain">None</value></item></metadata><recentMessages><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71436</revision><author>devilhorns</author><log>Edje: Cleanup compiler warnings if NEWPARTLOOKUP is not defined.   </log><diffLines>65</diffLines><url>http://trac.enlightenment.org/e/changeset/71436</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1338037659</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71435</revision><author>devilhorns</author><log>Edje: Fix compiler warnings for edje_entry_input_panel functions when
Ecore is built without IMF support.   </log><diffLines>62</diffLines><url>http://trac.enlightenment.org/e/changeset/71435</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_entry.c">src/lib/edje_entry.c</file></files></commit></body><timestamp>1338037215</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71387</revision><author>raster</author><log>fix async embryo_cc stuff. it was losing all the embyro compiles!   </log><diffLines>61</diffLines><url>http://trac.enlightenment.org/e/changeset/71387</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337853734</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71378</revision><author>raster</author><log>add a -threads mode and make non-threaded compile the default... no
pending threads then. we can change this later for more testing.
trying to narrow down issues anyway.   </log><diffLines>68</diffLines><url>http://trac.enlightenment.org/e/changeset/71378</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc.c">src/bin/edje_cc.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc.h">src/bin/edje_cc.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337847819</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71344</revision><author>raster</author><log>add brackets.. to if...   </log><diffLines>15</diffLines><url>http://trac.enlightenment.org/e/changeset/71344</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337762802</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71341</revision><author>raster</author><log>found scrollbar bug in e17 theme... something to do with my making
part lookups faster (O(1)). disable new part lookup code until i've
figured it out.   </log><diffLines>86</diffLines><url>http://trac.enlightenment.org/e/changeset/71341</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337758585</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71309</revision><author>raster</author><log>dont eet_close on error/abort as it can cause segv's now due to threads.   </log><diffLines>14</diffLines><url>http://trac.enlightenment.org/e/changeset/71309</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337693606</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71285</revision><author>seoz</author><log>edje edje_cc_handlers.c: Fixed formatting while reading the code. </log><diffLines>644</diffLines><url>http://trac.enlightenment.org/e/changeset/71285</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_handlers.c">src/bin/edje_cc_handlers.c</file></files></commit></body><timestamp>1337622385</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71277</revision><author>raster</author><log>From: SHILPA ONKAR SINGH &lt;shilpa.singh@samsung.com&gt;
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-&gt;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 &quot;drag&quot; signal. this code
is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag-&gt;down.x and drag-&gt;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-&gt;down.x and
drag-&gt;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. &quot;drag&quot;: is sent even before &quot;drag,start&quot; [ 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-&gt;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-&gt;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 &quot;drag&quot; signal. this code is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag-&gt;down.x and drag-&gt;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-&gt;down.x and drag-&gt;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. &quot;drag&quot;: is sent even before &quot;drag,start&quot; [ 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-&gt;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-&gt;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 &quot;drag&quot; signal. this code
is 
unnecessary/buggy  and instead it causes the jump.
1. In mouse down only drag-&gt;down.x and drag-&gt;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-&gt;down.x and
drag-&gt;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. &quot;drag&quot;: is sent even before &quot;drag,start&quot; [ 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-&gt;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-&gt;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 &quot;drag&quot; signal. this code is 
unnecessary/buggy  and instead it causes the jump.
  1. In mouse down only drag-&gt;down.x and drag-&gt;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-&gt;down.x and drag-&gt;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. &quot;drag&quot;: is sent even before &quot;drag,start&quot; [ 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-&gt;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.   </log><diffLines>91</diffLines><url>http://trac.enlightenment.org/e/changeset/71277</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/ChangeLog">ChangeLog</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_callbacks.c">src/lib/edje_callbacks.c</file></files></commit></body><timestamp>1337610678</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71264</revision><author>hyoyoung</author><log>edje/multisense: add checking sample,tone name at playing. and some indent fixes  </log><diffLines>132</diffLines><url>http://trac.enlightenment.org/e/changeset/71264</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_multisense.c">src/lib/edje_multisense.c</file></files></commit></body><timestamp>1337591439</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71243</revision><author>cedric</author><log>edje: fix little oopsie on theme change.  </log><diffLines>15</diffLines><url>http://trac.enlightenment.org/e/changeset/71243</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_load.c">src/lib/edje_load.c</file></files></commit></body><timestamp>1337513925</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71242</revision><author>cedric</author><log>edje: reduce memcpy in edje_cc by using Eina_File.  </log><diffLines>307</diffLines><url>http://trac.enlightenment.org/e/changeset/71242</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/ChangeLog">ChangeLog</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/NEWS">NEWS</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337513358</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71241</revision><author>cedric</author><log>edje: remove useless printf.  </log><diffLines>22</diffLines><url>http://trac.enlightenment.org/e/changeset/71241</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_util.c">src/lib/edje_util.c</file></files></commit></body><timestamp>1337513332</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71235</revision><author>cedric</author><log>edje: fix double opening of edje file.

NOTE: know issue, in elementary_config the size of the icon
change after a theme reload. I don't know what information is
lost between to reload. If someone can point at them, thanks.  </log><diffLines>1220</diffLines><url>http://trac.enlightenment.org/e/changeset/71235</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_load.c">src/lib/edje_load.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_private.h">src/lib/edje_private.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_smart.c">src/lib/edje_smart.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_util.c">src/lib/edje_util.c</file></files></commit></body><timestamp>1337367526</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71229</revision><author>hyoyoung</author><log>edje: add sample and tone of multisense to edje inheritance  </log><diffLines>17</diffLines><url>http://trac.enlightenment.org/e/changeset/71229</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_handlers.c">src/bin/edje_cc_handlers.c</file></files></commit></body><timestamp>1337345696</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71155</revision><author>raster</author><log>work around the workaround so it works until ecore thread goop fixed.   </log><diffLines>30</diffLines><url>http://trac.enlightenment.org/e/changeset/71155</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337181889</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71152</revision><author>cedric</author><log>edje: fix text and table with fixed point and clamp image tween.  </log><diffLines>170</diffLines><url>http://trac.enlightenment.org/e/changeset/71152</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/ChangeLog">ChangeLog</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/NEWS">NEWS</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_watch.c">src/bin/edje_watch.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_calc.c">src/lib/edje_calc.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_load.c">src/lib/edje_load.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/lib/edje_text.c">src/lib/edje_text.c</file></files></commit></body><timestamp>1337180273</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71144</revision><author>raster</author><log>work around race condition bug in ecore for now so edje_cc is reliable
again. CEDRIIIIIIIIIIIIIIIIIIIC!   </log><diffLines>176</diffLines><url>http://trac.enlightenment.org/e/changeset/71144</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337169799</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71138</revision><author>raster</author><log>and clean up some of the work on parallelized edje_cc. code less ugly
now.   </log><diffLines>404</diffLines><url>http://trac.enlightenment.org/e/changeset/71138</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file></files></commit></body><timestamp>1337150146</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>edje</module></source><body><commit><revision>71112</revision><author>raster</author><log>optimize edje_cc - now betwene 3.5 x and 4x as fast. new options
(-fastcomp and -fastdecomp) -fastcomp makes for faster decompressing
AND faster compressing of edj files, -fastdecomp is a bit slower on
compression but also as fast as -fastcomp in decompression. note that
edje files built with these optiosn will not work on older edje
installations, thus they are options.   </log><diffLines>2197</diffLines><url>http://trac.enlightenment.org/e/changeset/71112</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/ChangeLog">ChangeLog</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc.c">src/bin/edje_cc.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc.h">src/bin/edje_cc.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_out.c">src/bin/edje_cc_out.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_parse.c">src/bin/edje_cc_parse.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_cc_sources.c">src/bin/edje_cc_sources.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/edje/src/bin/edje_decc.c">src/bin/edje_decc.c</file></files></commit></body><timestamp>1337100539</timestamp></message></recentMessages></statsTarget>
