Commit Graph

372 Commits

Author SHA1 Message Date
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
Carsten Haitzler 93e833d8cd efl ui win - fix focus break for terminology (at least)
at least terminology was broken by this. perhaps other efl apps. if an
efl app has decided to manually play with focus itself, like set focus
to some obj then leav ie, this line breaks that and interferes with
the object focused whenever the window gets focus set. if there is a
focus manager at least this is a new thing and so let the focus
manager set focus, but dont set old evas focus.

this fixes the break added in 56beb861e8
2018-02-13 13:46:38 +09:00
Marcel Hollerbach 56beb861e8 efl_ui_win: move inital focus set to focus_in handler
it seems that focus changes to FOCUS=FALSE are causing autodel windows
to kill themself, so we only set the focus on the window if the window
manager calls focus in AND we dont have anything to focus and nothing is
focused yet.
2018-02-11 18:04:06 +00:00
Shinwoo Kim 9f2e1d050f elm: Use ERR instead of CRI if *DATA_GET* returns NULL 2018-02-01 12:16:28 +09:00
Jean-Philippe Andre 426ccba6bd win: Fix legacy win type name
Window constructor is hijacked by the finalize method, which messes up
the normal order of operations. As a result, the legacy type name for a
window object was "elm_widget" rather than "elm_win".

This fixes a crash in E (as it checks the legacy type name to verify an
object's type).

See D5748
2018-01-25 11:43:31 +09:00
Sungtaek Hong cb25699dac efl_ui_legacy: add new interface to indicate legacy widget
Summary:
For now, how to check whether a widget is legacy or not
is to check flags in private data or static flag, which is set
during elm_legacy_add.
If Efl.Ui.Legacy interface is added, it can be easilly checked
by efl_isa(obj, EFL_UI_LEGACY_INTERFACE)

Reviewers: woohyun, jpeg, cedric, Jaehyun_Cho

Subscribers: conr2d, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5748
2018-01-24 18:14:26 +09:00
YeongJong Lee f6ba674cd8 efl_ui_win: Avoid a call to NULL
Summary:
parent_get and smart_parent_get are called in parent_widget_get
this also remove the duplicated code

Reviewers: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5757
2018-01-24 15:36:08 +09:00
Jean-Philippe Andre 20570f74d3 widget: Move on_focus_update to Focus.Object
Following @taxi2se's recommendation. This is indeed a focus method, and
Widget already inherits from Focus.Object.

Ping @bu5hm4n who probably wants to adapt this further.

Ref T5363
2018-01-19 17:30:04 +09:00
Jean-Philippe Andre c35f257bf2 widget: Remove item from on_focus_update
It's legacy stuff, and always NULL.
2018-01-19 17:17:01 +09:00
Mike Blumenkrantz 7a3ec89fd2 elm_win: move wayland display flush to after method calls
ref b48781aa6c
2018-01-18 10:47:43 -05:00
Jean-Philippe Andre eb10b6eb25 win: Avoid a warning
I still hate those types.
warning: case value not in enumerated type 'Efl_Ui_Win_Type' [-Wswitch]
2018-01-18 16:20:52 +09:00
Jean-Philippe Andre 50a082cab9 win: Remove "ioerr" event
Unless it's implemented for Wayland as well, AND provides more
information than a NULL event_info, I see no point in this being an EO
event. Keep legacy as-is: a smart callback only.

Also, minor cleanups to the EO file.

Ref T5322
2018-01-18 14:06:45 +09:00
Mike Blumenkrantz b48781aa6c wayland: always flush client display when protocol sends are pending
in the case where a connection was not actively rendering, there was nothing
which would trigger a display flush, leading to applications potentially
deadlocking

@fix
2018-01-17 17:06:13 -05:00
Jean-Philippe Andre 7cef580f11 win: Fix standard window bg with custom themes
Ref T6579
See also D5740
2018-01-17 14:18:25 +09:00
Mike Blumenkrantz ffa276fce3 wayland: add xdg-shell vfinal support for client-side
@feature
2018-01-10 11:39:52 -05:00
Amitesh Singh 44d3227beb widget: rename elm widget to Efl.Ui.Widget. 2018-01-08 21:28:10 +09:00
Carsten Haitzler f8c9b0d71e warning remove - ignoring const (returning obj handle)
cast to fix
2018-01-06 19:01:05 +09:00
Cedric BAIL 526415d903 eo: make efl_provider_find a @const function. 2018-01-04 11:45:10 -08:00
Carsten Haitzler 9bedda14b3 efl loop - rename ecore_main_loop_get to efl_main_loop_get
ecore_main_loop_get() is really a new "eo api" but it's using our old
ecore_* namespace, so move to the new efl namespace.
2018-01-02 16:13:54 +09:00
Amitesh Singh 9db0ec554b interface: add Efl.Gfx.Color interface for color related APIs
This would eventually turn into mixin class later after adding
more color related helper functions.
2017-12-22 13:29:20 +09:00
Jean-Philippe Andre 0f1469280d win: Show windows created by efl_add with a job
This fixes efl_add(WIN) on wayland, using an internal API.
Test scenario:
  ELM_DISPLAY=wl elementary_test -to "Part Shadow"
2017-12-19 20:37:25 +09:00
Sungtaek Hong 25136ddf8c efl_ui_bg: add Efl.Ui.Bg interface
Summary:
- Previous class efl_ui_bg moved to efl_ui_bg_widget.
- Scale_type moved to efl_image from efl_ui_image.
- Previous enum Efl_Ui_Image_Scale_Type moved to Efl_Image_Scale_Type.

Test Plan:
Run elementary_test
1.Image Scale Type
2.Efl.Ui.Bg
3.Efl.Ui.Win
4.Part Background

Reviewers: jpeg, woohyun, cedric

Differential Revision: https://phab.enlightenment.org/D5616
2017-12-18 20:49:45 +09:00
Amitesh Singh 72b96bc4c5 Efl.Canvas: make pointer_iterate a beta API
Gesture framework should implement it.
2017-12-12 15:52:33 +09:00
Hosang Kim 26272bf3a2 win: apply conformant features.
Summary:
- implement indicator enable/disable
- implement indicator type
- add indicator swallow area to border.edc
- add 'test win indicator' sample

Test Plan: elementary_test -> win_indicator

Reviewers: woohyun, cedric, jpeg

Subscribers: taxi2se, jypark, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5418
2017-12-12 10:53:14 +09:00
Amitesh Singh 80463f0e2e interface: add Efl.Canvas.Pointer intf for pointer related functions.
and remove pointer_inside function from Efl.Canvas{}
2017-12-08 20:13:31 +09:00