Commit Graph

56115 Commits

Author SHA1 Message Date
Marcel Hollerbach 5e96d6e378 efl_ui_focus_manager_calc: really free all direction
i must have been have asleep when i wrote this, we need to iterate all
directions not only to the max id of 4
2017-10-19 15:20:59 +02:00
Marcel Hollerbach 0c3bec93a1 elm_gengrid: bring in item once focused
and select & focus the item where the widget is in
2017-10-19 15:20:59 +02:00
Marcel Hollerbach 8d20422e8b elm_scroller: scroll to a focused element 2017-10-19 15:20:59 +02:00
Marcel Hollerbach 3184e0f550 elm_interface_scrollable: do not scroll to a focused element by default
this can be done in the implementing other widgets
2017-10-19 15:20:59 +02:00
Marcel Hollerbach f720115f08 elm_widget: update parent instead of unregister for the case of parent
change

This means we maintain the focus state over a parent change
2017-10-19 15:20:59 +02:00
Marcel Hollerbach eb997134d0 efl_ui_focus_parent_provider_gen: looks to get the last widget before
gengrid

This means we are garanteed to find the item
2017-10-19 15:20:59 +02:00
Marcel Hollerbach 5b2637b14e elm_gengrid: force the item to be added _again_ as subobj
so we make sure the registering fetches the correct element
2017-10-19 15:20:59 +02:00
Marcel Hollerbach ffbb17a568 elm_gengrid: force the item to be realized once we try to move focus
So the widget is there, once we try to register it
2017-10-19 15:20:59 +02:00
Marcel Hollerbach 2e26d7a6cf efl_ui_focus_manager_calc: move the debug output in there
reduces the load of debug messages, and the debug messages are now only
emitted from the manager that is not the redirect. And the real elements
that are focused are printed
2017-10-19 15:20:59 +02:00
Carsten Haitzler 64529eac19 elm config - finish flagging all other values that can be set by api
this now means any app that called elm_config_*set on any field at all
will keep what it set forever until it changes it even if shared/core
config changed.
2017-10-19 17:32:47 +09:00
Carsten Haitzler a04d8a929a elm config - track which vars you set locally and keep them as-is
this now flags about 1/4 of the config vars in elm config if you set
them locally so they wont change on conifg reload. i have just started
and this is the first batch. needs more work.
2017-10-19 17:32:47 +09:00
Marcel Hollerbach 56e9f582b6 elm_interface_scrollable: make sure this region is really visual
right now we just request the complete geom to be visible since there
seems to be no way ot checking where the new widgets will be in. This
needs some improvements.
2017-10-19 10:04:59 +02:00
Marcel Hollerbach 67234dcde1 efl_ui_focus_manager_calc: reimplement move to be more compact & small
this fixes a bug when a redirect was unset while going the prev
direction.
2017-10-19 10:04:59 +02:00
Marcel Hollerbach 6956dfc7a6 efl_ui_focus_manager_calc: put every element on the focus stack
move the addition to the focus stack to the general path. This means
every element is now on the focus stack.
2017-10-19 10:04:59 +02:00
Marcel Hollerbach d701597eb9 efl_ui_focus_manager_calc: move unfocusing the last element into its own
function
2017-10-19 10:04:59 +02:00
Marcel Hollerbach 0220418b84 efl_ui_focus_manager_calc: check if we are already focused earlier
if we dont do that we may unset a redirect just to set the same redirect
again.
2017-10-19 10:04:59 +02:00
Jean-Philippe Andre 0a13e15c7d evas/gesture: Fix up a couple of APIs, add some FIXME
Some things have clearly not been tested. Some APIs have not been
modified after repeated review comments. C++ failed to build due to
"long" being used as a namespace.

Remaining issues:
 - The original finger_list API was broken by design. I didn't try to
   replace it yet.
 - Long tap is also broken by design: if no move happens the recognizer
   gets no event, and doesn't trigger anything when the timeout is
   reached. An API or event is lacking here.
 - Only 2 very basic gestures have been implemented. All the gestures
   from elm_gesture_layer need to be covered. None of the multi touch
   support has been really implemented, except for a single bool flag.
 - The configuration must be loaded from elm_config, passed on to the
   recognizers.
 - Some micro optimization may be required, especially if the input
   device is high frequency (eg. 1KHz gaming mouse).
2017-10-19 12:25:57 +09:00
smohanty 20fad2e78e evas/gesture: Enabled efl_provider_get() to find gesture manager 2017-10-19 10:33:12 +09:00
smohanty 023d9a403c elementary_test: Added test case for log_tap gesture 2017-10-19 10:33:12 +09:00
smohanty d5f72053fd evas/gesture: Added long_tap gesture to gesture framework 2017-10-19 10:33:12 +09:00
smohanty ba3afc74a8 elementary_test: Added gesture_framework test to the elementary test suit. 2017-10-19 10:33:12 +09:00
smohanty 28869a9395 evas/gesture: Integrated gesture framework to evas. 2017-10-19 10:33:12 +09:00
smohanty 9da7a7f0d2 evas/gesture: Added gesture manager implementaion. 2017-10-19 10:33:12 +09:00
smohanty 4b997e89e5 evas/gesture: added recognizer and tap recognizer implementation 2017-10-19 10:33:12 +09:00
smohanty 5af499b01b evas/gesture: Added gesture and tap gesture implementation. 2017-10-19 10:33:12 +09:00
smohanty e65f18ef3e evas/gesture: Added touch accumulator class implementation. 2017-10-19 10:33:12 +09:00
smohanty a403023242 evas/gesture: Added gesture_private header file. 2017-10-19 10:33:12 +09:00
smohanty b1c6915ab4 evas/gesture: Added Eo classes for evas gesture framework. 2017-10-19 10:33:12 +09:00
Lukasz Stanislawski 57aefc53c1 elm: rename Elm_Interface_Atspi_Accessible interface
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5341
2017-10-19 10:13:54 +09:00
Jean-Philippe Andre 98622623a0 evas: Prevent crash with image_data_get
If the image has no data, it may get an allocated surface of 1x1 but it
is not sane to return the pointer to that data, as the user would expect
a normally sized image (in my case, 1920x1080).

I do not fully understand what is going on with this image. But at least
this transforms a crash into a simple ERR in ~/.xessions-errors

Two similar crashes happened:
 - SIGSEGV by writing data outside of the image data
 - abort() in free() because the malloc metadata has been overridden
   when writing outside of the image data (newly allocated 1x1).

Fixes T5957

@fix
2017-10-18 22:12:57 +09:00
Jean-Philippe Andre dfd98b3e48 win: Do not forward all key events on win (legacy)
OMG... I do not like this patch.

See T6148, two key down events are received when a key grab is installed
on a Win object. This is because all input events are propagated from
ecore all the way up to win and can be listened on. Unfortunately this
breaks existing applications that use the key grab API properly to
listen to key events.

Another side effect is that ALL key events are received by the window,
which means it's not limited to what the application expected (from its
list of grabs).

Solution (ugly): block propagation of key down/up events if the window
is a legacy window. This means that no key grab is required for EO
windows, but key grabs are still required for legacy windows.

Fixes T6148

@fix
2017-10-18 21:01:56 +09:00
Jeonghyun Yun 80a5297ae4 elm_scroller: fix scrolling with key move
Use content_region_show instead of content_pos_set in _key_action_move

Summary:
When user keep pressing key down or else on scroller content, scroller
animation is lagging because of elm_interface_scrollable_content_pos_set
by step_x or step_y value.  When focus moved to next object by press key
down or else, content_pos_set by ecore_animator continuously.  In this
time, content_pos_set in _key_action_move by step_x or step_y value
caused animation lagging problem.  I fixed to use content_region_show
instead of content_pos_set in _key_action_move for remove exist
animator.

Test Plan:
1. elementary_test -> Scroller3
2. Press 3 times "Append 10 Items in 3s" button
3. focus to Item1 and keep pressing key_down

Reviewers: jpeg, woohyun

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5278
2017-10-18 20:31:05 +09:00
Jean-Philippe Andre 83d063692f genlist: Fix crash on item delete
See d3440a9867

Fixes T6033
2017-10-18 20:01:35 +09:00
Jean-Philippe Andre 24c0eced77 config: Simplify EO API
This is:
 - using a property (but terribly ugly due to the ownership on the
   returned value)
 - removing an unused function

Note: This interface Efl.Config covers only elm_config for now. But it's
very generic and could be used in the future for application specific
configuration.
2017-10-18 19:32:00 +09:00
Jean-Philippe Andre 315e865f18 elm: Split elm_general.eot in two: legacy and EO
This creates efl_ui.eot
It's not called efl_ui_types.eot because a file with that name already
exists in efl/interfaces (for Efl.Ui.Drag functions).

Also add some FIXME comments, and move some types to elm_widget_item.eo.

Ref T5329
2017-10-18 19:24:28 +09:00
Taehyub Kim 5360034675 ecore: remove doxygen warning messages
Summary:
remove doxygen warning messages
@fix

Reviewers: jpeg, cedric, woohyun

Reviewed By: jpeg

Differential Revision: https://phab.enlightenment.org/D5339
2017-10-18 19:24:28 +09:00
Shinwoo Kim 06eee29b76 elm: enhance documentation for following files
- elm_config.h
 - elm_focus.h
 - elm_genlist.h
 - elm_icon.h
 - elm_image.h
 - elm_image_legacy.h
 - elm_index.h
2017-10-18 17:38:16 +09:00
Carsten Haitzler 63a97dc8b4 licensing - remove dates as they aren't strictly needed under common law
common law copyright establishes copyright at point of creation anyway
and there isn't a need to keep dates there. saves having to update them.
2017-10-18 13:29:35 +09:00
Jean-Philippe Andre d4d7a783ed widget: Add FIXME note and cleanup whitespaces 2017-10-18 11:22:34 +09:00
Jean-Philippe Andre 79a1fd94ee edje: Use EO's beta auto_unref API for parts
This simplifies code and avoids unwanted leaks.
2017-10-18 11:02:16 +09:00
Jean-Philippe Andre df304d0155 eo: Add beta API for auto_unref after a call
Before screaming in horror (C++...) here's why we may need this:
Efl.Part.part API returns an object that is by definition valid for a
single function call only. Enforcing this in practice is actually quite
hard as all implementation functions must manually take care of the
life-cycle. This is a lot of code in many places and a lot of
opportunities to forget to properly handle that life-cycle. Also, this
means any invalid function call on a part will leak an object.

This API absolutely must remain either "internal" or "beta" and
definitely not become abused by applications. On top of that such an API
can cause great trouble for bindings like C++. As a consequence, only
specially crafted APIs like efl_part() should return an object marked as
auto_unref.

Alternatively this API could be defined in Eo.h or some other
Eo_Internal.h. I placed it in efl_object.eo because it's much more
convenient :) (read: I'm lazy)

****

Performance notes:

Tested with clang & gcc (with -O2), I had a look at the output of perf
top, in particular the asm view. I used eo_bench in a loop. My
conclusions are:

- EINA_LIKELY/UNLIKELY actually works. The jump statement varies
  according to the expectation. I highly doubt all those ugly goto in
  eo.c / Eo.h are even useful.

- The impact of auto_unref on a call_resolve is so small it doesn't even
  appear in the trace. It is significant inside call_end, though
  (obviously, that function is just a few lines long). That function
  accounts for ~1% to ~4% of all CPU time. The impact of auto_unref in
  call_end is ~4% of the function time. This means ~0.16% of all CPU
  time (worst measured case). _efl_object_op_api_id_get simply doesn't
  show up because of caching, so the extra check there is negligible.

PS: I also tested EINA_LIKELY/UNLIKELY by compiling with -O2 and looking
at the output with objdump. The flag is well respected, and the jump
instructions are what you would expect (no jump for LIKELY and jump for
UNLIKELY). Conclusion: The goto's in eo.c only make the code harder to
read...
2017-10-18 11:02:16 +09:00
Jean-Philippe Andre a1a04629e4 benchmarks: Fix titles in gnuplot
Just replace _ with \_ as _ means subscript.
2017-10-18 11:02:16 +09:00
Thiep Ha 6597b89f53 edje: correct the usage of EINA_SIZE2D
The usage of EINA_SIZE2D macro as left hand side variable
does not save the size value. The Eina_Size2D should be used.
2017-10-18 10:51:49 +09:00
Thiep Ha 65a87eb575 textpath: get the right size of text object
Recent change to use EINA_SIZE2D made the size be gotten incorrectly.
This corrects it.
2017-10-18 10:51:04 +09:00
Cedric Bail 6e64a104a6 eina: use a stringshare to store the filename internally.
T6164
2017-10-17 16:15:19 -07:00
Cedric Bail e0807ce797 eina: fix eina_hash_stringshared_new to actually compute the hash on the pointer.
Before this patch, the key would always be zero and the hash would solely
rely on the rbtree to be efficient. This improve the situation by using the pointer
as the key during hash computation.
2017-10-17 16:15:18 -07:00
Cedric Bail 29c6c3b95b eina: refactor eina hash computation of key length and hash value. 2017-10-17 16:15:18 -07:00
Prince Kumar Dubey 28ce98c411 elementary: fix double assignment
Summary: local variable "bp" assigned twice unnecessarily. The duplicate assignment is removed.

Reviewers: raster, cedric, jpeg

Subscribers: jpeg, rajeshps

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-17 11:03:24 -07:00
Bowon Ryu a5323998c7 eina: add missing documentation for quad.
Summary: This adds missing doxgen documentation for eina_quad.

Test Plan: API Doxygen Revision

Reviewers: cedric, jpeg, myoungwoon

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-17 11:00:53 -07:00
Bowon Ryu 47f70a43d1 eina: add missing documentation for rectangle.
Summary: This adds missing doxgen documentation for eina_rectangle.

Test Plan: API Doxygen Revision

Reviewers: cedric, jpeg, myoungwoon

Reviewed By: cedric

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-17 10:56:23 -07:00