Commit Graph

396 Commits

Author SHA1 Message Date
Cedric BAIL 8a513a522e efl: major rewrite of efl_part.
The interface efl_part_get should not be directly called from C, but the efl_part
wrapper should. It rely on efl_noref to properly destroy the object. Binding can
control the lifecycle of the reference the way they want by either calling the
wrapper or efl_part_get directly. It also means that the ugly ___efl_auto_unref_set
doesn't need to be exposed outside of EFL anymore.

Differential Revision: https://phab.enlightenment.org/D6098
2018-05-24 16:02:18 -07:00
Mike Blumenkrantz efe5f92377 efl_ui_win: always force resize job on first pre-render
Summary:
ensure that a resize eval occurs after the frame edje has been thawed
so that sizing will be correct in engines which either still have
broken size handling (D6019) or have sub-optimal size handling (D6145)

Reviewers: bu5hm4n, cedric

Reviewed By: bu5hm4n

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6165
2018-05-23 10:28:06 +02:00
Marcel Hollerbach 5de88592bc efl_ui_win: hand-ref-count the provider object
Summary: Depends on D6108

Reviewers: cedric

Reviewed By: cedric

Subscribers: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6109
2018-05-16 13:30:33 -04:00
Marcel Hollerbach a218c883c7 Introduce efl_ui_widget_focus_manager
Summary:
The mixin encapsulates the correct
- creation
- composition attaching
- Lifecycle handling

of the focus managers that are assosiated with the object.

This fixes error messages on shutdown, and additionally lifetime issues
where the composite_attached object was deleted before the object was
deleted.

Reviewers: cedric, zmike

Reviewed By: zmike

Subscribers: segfaultxavi, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6108
2018-05-16 13:30:28 -04:00
Derek Foreman 4f720657d2 efl_ui_win: Pass seat info for wayland move/resize
Summary:
In wayland we need to know which seat initiated the CSD compositor move
request to properly handle input.
Depends on D6124

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6125
2018-05-08 13:26:35 -05:00
Derek Foreman 1729cbe33e efl_ui_win: Directly call ecore_wl2 move and resize functions
Summary:
These ecore_evas_wayland things seem like they shouldn't exist.  The
ecore_wl2 api is better and still in beta so it can be fixed when it's
shown to be broken/wrong as the ecore_evas_wayland ones are. :(

The move API is stuck with x, y co-ordinates that can never make sense,
and neither API is capable of passing seat info.
Depends on D6123

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6124
2018-05-08 13:26:30 -05:00
Derek Foreman 77f946a92c elm_win: Remove move stop callback
Summary:
This is only fired to trigger a cursor set under wayland, but that cursor
set should be done unconditionally on mouse in.

However, mouse in was being discarded because mouse out was being deferred
when the window was "grabbed" for moving.

If instead we just let the mouse out occur as it should, the cursor
is properly updated on mouse in.
Depends on D6118

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6119
2018-05-08 13:25:54 -05:00
Mike Blumenkrantz 78c2f1e659 efl_ui_win: ignore attempts to resize window to 0x0 during frame sizing
Summary:
in many cases, a 0x0 size is found here as a result of various quirks at
different states of window initialization. passing 0x0 will clamp the size
to 1x1 and, for some engines, create a race condition during initial
sizing which causes the window not to render

ref T6907

Reviewers: cedric, ManMower, vtorri

Reviewed By: vtorri

Subscribers: raster, stefan_schmidt

Tags: #efl

Maniphest Tasks: T6907

Differential Revision: https://phab.enlightenment.org/D6016
2018-05-02 15:57:21 -04:00
Chris Michael 25835c6c5c elementary: Remove unused variable 2018-05-01 13:49:01 -04:00
Marcel Hollerbach fdfcae968b elm_widget: Introduce elm_focus_legacy
Code located here is meant for a legacy tree and legacy widgets.
This is checked on the entry of the function
2018-04-30 19:24:47 +02:00
Jaehyun Cho 08a11dcbf9 efl theme: Replace legacy signal names with efl ui signal names
Replace legacy signal/source names with efl ui signal/source names.
e.g. From "elm,state,content,set" "elm" to "efl,state,content,set" "efl"
2018-04-26 22:45:59 +09:00
Taehyub Kim c83895b144 efl_ui_win: fix the wrong bracket
Summary: efl_ui_win: fix the wrong bracket

Reviewers: Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: cedric, stefan

Differential Revision: https://phab.enlightenment.org/D6007
2018-04-26 21:00:35 +09:00
Taehyub Kim 6e49db0739 efl theme: remove the elm legacy name of efl ui theme
Summary: remove the elm legacy name of efl ui theme

Test Plan: run elementary_test and test efl ui widget cases

Reviewers: Jaehyun_Cho, woohyun, cedric, raster, jpeg

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5934
2018-04-26 19:41:03 +09:00
Mike Blumenkrantz 473e657120 efl_ui_win: remove references to removed functions
Reviewers: ManMower

Reviewed By: ManMower

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D6004
2018-04-25 12:22:40 -04:00
Mike Blumenkrantz f37b96a1de efl_ui_win: simplify checking theme version when adding frame
Summary:
the win has no theme set, so this would always return null
Depends on D5956

Reviewers: cedric

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D5957
2018-04-25 12:09:32 -04:00
Mike Blumenkrantz 7afd83569b elm_win: remove useless function
Summary: Depends on D5961

Reviewers: ManMower, cedric

Reviewed By: ManMower, cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5945
2018-04-25 12:07:28 -04:00
Mike Blumenkrantz d033d747ff efl_ui_win: resolve race conditions with csd sizing on first show
there were some cases where frame geometry was being calculated/applied
strangely as a result of moving all of the layout calcs to pre-render.
enforcing a frame calc+resize resolves these issues

Differential Revision: https://phab.enlightenment.org/D5961
2018-04-25 12:07:28 -04:00
Mike Blumenkrantz fa02f16a3f efl_ui_win: remove show intercept function
this should just be handled in the pre-render callback where the rest
of the calc for the window is done

also removes an unnecessary smart calc

Differential Revision: https://phab.enlightenment.org/D5960
2018-04-25 12:06:33 -04:00
Mike Blumenkrantz 34be51e105 elm_win: freeze frame object edje until first pre-render
this avoids a substantial number of unnecessary recalcs and halves the calltime
for elm_win_add

ref T6884

Differential Revision: https://phab.enlightenment.org/D5944
2018-04-25 12:06:33 -04:00
Mike Blumenkrantz e28c76e244 elm_win: set manual render and freeze frame object during deferred free
ensure no recalcs of any kind occur on a deleted window

Differential Revision: https://phab.enlightenment.org/D5949
2018-04-25 12:00:11 -04:00
Xavi Artigas 5697f6e94b Efl.Gfx.Image* (From Efl.Image*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:40 -07:00
Xavi Artigas 55bd097a3d Efl.Gfx.Entity (from Efl.Gfx)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:32 -07:00
Xavi Artigas 9dcc31ed4a Efl.Access.Object (from Efl.Access)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:24 -07:00
Xavi Artigas 65ee277a66 Efl.Canvas.Scene (from Efl.Canvas)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:23 -07:00
Derek Foreman 3acd8cdf80 efl_ui_win: Remove _elm_win_opaque_update
This stuff is all in the wayland ecore_evas now, so elm no longer needs
to handle it.
2018-04-20 13:00:28 -05:00
Derek Foreman 36f015cda1 efl_ui_win: Remove special wayland opaque_dirty stuff
This isn't necessary anymore as ecore_evas handles it internally now.
2018-04-20 13:00:28 -05:00
Derek Foreman a9fd904a6e efl_ui_win: Explicitly set alpha for wayland cursors
Instead of depending on the backend figuring it out.
2018-04-20 13:00:28 -05:00
Derek Foreman 3d2f5b1fd8 efl_ui_win: stop updating wdata->content
We don't need this because we calculate it in ecore_evas from the shadow
value and framespace.
2018-04-20 13:00:27 -05:00
Derek Foreman 50a9b49acc elm_win: Don't do auto norender on non X11 engines
This only really makes sense on X11 and can lead to some seriously
confusing cases on other engines (*cough* wayland) when elm's idea
of iconified state doesn't match the compositor's.

While currently only X11 is whitelisted, other backends can be
added, though I suspect most are more like wayland where it makes
no sense at all.

ref T6834
2018-04-18 09:15:39 -05:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
YeongJong Lee 1d182a44f3 efl_ui_win: add "focused" and "unfocused" signals emission
Summary:
Win is root of focus manager. it means Win is logical node and "focused" and
"unfocused" signals in Win aren't handled by focus manager.
Win needs to emit the signals itself.

Reported by eagleeye, jsuya

Test Plan:
1. elementary_test -to 'window states'
2. Check that "WIN FOCUS: focused" and "WIN FOCUS: unfocused" printed.

Reviewers: bu5hm4n

Reviewed By: bu5hm4n

Subscribers: jsuya, cedric, eagleeye

Differential Revision: https://phab.enlightenment.org/D5931
2018-04-13 11:07:34 +02:00
Derek Foreman 2ad9b80517 efl_ui_win: Always show the wayland pointer
It's hidden by the compositor as required, so this just makes life much
more complicated in other code.

ref T6834
2018-04-12 15:59:39 -05:00
Carsten Haitzler 08dc189053 elm win - change parent to only use win parents in efl win struct as parent 2018-04-05 18:52:57 +09:00
Derek Foreman 2ec16fbf32 elm_win: Improve wayland cursor change race
When changing cursors under wayland sometimes we'll see the old cursor
moved to the new hotspot briefly before the cursor changes.  This makes
that suck less often.

A proper fix would involve creating a new wayland surface for every
cursor change (actual change, not just a new frame of an animated
cursor).  Given the current internals this is invasive.  Do the
easy thing for now.
2018-04-04 15:31:05 -05:00
Derek Foreman 63c96df0d4 elm_win: Remove unused variable
hot_obj is unused
2018-04-04 11:16:32 -05:00
Marcel Hollerbach 8fa22f2ab7 elm_config: add new infra for reloading config into the widget tree
fix T6792
2018-03-28 10:48:01 +02:00
Cedric BAIL cd8952cc6c efl_ui_win: match return value to function type in elm_win_window_id_get
ref 08c9f99134

Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:57 -07:00
Cedric Bail 08c9f99134 elementary: make sure windows are not born orfan and properly have at least a main loop as parent. 2018-03-19 15:39:14 -07:00
Cedric BAIL 14bbae9b23 efl_ui_win: do not trigger elm quit policy twice for same win
only check each policy for the case which should trigger it to avoid borking
main loop

Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-13 15:14:50 -07:00
Cedric BAIL 5dcbda3137 efl_ui_win: track the finalize future for del to avoid crash
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-13 15:14:50 -07:00
Carsten Haitzler 1bdd9e4dd1 ecore - a different take on efl.app class as a super class to efl.loop
so the MAIN loop is actually an efl.app object. which inherits from
efl.loop. the idea is that other loops in threads will not be efl.app
objects. thread on the creator side return an efl.thread object.
inside the thread, like the mainloop, there is now an efl.appthread
object that is for all non-main-loop threads.

every thread (main loop or child) when it spawns a thread is the
parent. there are i/o pipes from parnet to child and back. so parents
are generally expected to, if they want to talk to child thread, so
use the efl.io interfaces on efl.thread, and the main loop's elf.app
class allows you to talk to stdio back to the parent process like the
efl.appthread does the same using the efl.io interfaces to talk to its
parent app or appthread. it's symmetrical

no tests here - sure. i have been holding off on tests until things
settle. that's why i haven't done them yet. those will come back in a
subsequent commit

for really quick examples on using this see:

https://phab.enlightenment.org/F2983118
https://phab.enlightenment.org/F2983142

they are just my test code for this.

Please see this design document:

https://phab.enlightenment.org/w/efl-loops-threads/
2018-03-03 13:40:33 +09:00
Carsten Haitzler 1c74aaa7e9 Revert "cxx: Fix manual code after efl_app change."
This reverts commit 135154303b.

Revert "efl: move signal events from efl.loop to efl.app"
This reverts commit 3dbca39f98.

Revert "efl: add test suite for efl_app"
This reverts commit 3e94be5d73.

Revert "efl: create Efl.App class, the parent of Efl.Loop"
This reverts commit 28fe00b94e.

Go back to before efl.app because I think this should be done with
superclassing here not a parent object. reasons?

1. multiple loops per single thread make no sense. so if multilpe loop
objects they wont be contained in a single app object and then deleted
like this.
2. the app object is not really sharable in this design so it cant be
accessed from other threads
3. it makes it harder to get the main loop or app object (well 2 func
calls one calling the other and more typing. it is longer to type and
more work where it is not necessary, and again it can't work from
other threads unless we go duplicating efl.app per thread and then
what is the point of splittyign out the signal events from efl.loop
then?)

etc.
2018-03-03 13:40:33 +09:00
Mike Blumenkrantz 28fe00b94e efl: create Efl.App class, the parent of Efl.Loop 2018-02-26 14:02:51 -05:00
Mike Blumenkrantz b851afcb13 elm_win: disable handling of auto_norender_withdrawn for fake wins
these wins are not to be trifled with.

fix T6377
2018-02-23 14:18:41 -05:00
Mike Blumenkrantz f8e93775c0 efl.access: remove parent property
most of this is just a reimplementation of efl_provider_find
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 8b7bbb2398 efl.access: name -> i18n_name 2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 17687f4066 evas: remove Evas_Canvas.objects_in_rectangle_get
also implement Efl_Canvas method
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 420ba4691d evas: remove Evas_Canvas.objects_at_xy_get
also implement Efl_Canvas.objects_at_xy_get

note that any function which returns an iterator cannot be @const since
it's necessary to wref the object to ensure the iterator's lifetime
2018-02-15 13:10:59 -05:00
Carsten Haitzler 4195242c9b elm focus ... set focus in focus in if focus is not already on something
let's actually set focus in focus_in on window (ecore evas) IF focus
is not set. this seems to make terminology still work...
2018-02-13 18:12:11 +09:00
Carsten Haitzler 4eb5b2d3e8 efl ui win - if job runs after destruction of evas so dont flush pending 2018-02-13 15:28:47 +09:00