Commit Graph

161 Commits

Author SHA1 Message Date
Mike Blumenkrantz 12d7405a0f huge wl fixup (wayland clients actually working again)
* try to clear up build system for separating out ecore-x

* add #ifdefs for lots of ecore-x stuff

* break out some internal e wl functions for reuse in api

* store wl surface buffers as an inlist

* add protocol-specific client compositor data

** move lots of X client attributes here

* add pixmap type checks to a number of X-specific things, such as grabinput, to block them for non-X clients

* rearrange startup order to work with wayland

* move X screensaver code to e_comp_x

* flag modules still requiring X with -DNEED_X
2014-01-14 20:28:57 -05:00
Mike Blumenkrantz 86656e4df9 compositor rewrite / charlie-foxtrot situation
huge fustercluck commit because there wasn't really a way to separate out the changes. better to just rip it all out at once.

* compositor and window management completely rewritten. this was the goal for E19, but it pretty much required everything existing to be scrapped since it wasn't optimized, streamlined, or sensible. now instead of having the compositor strapped to the window manager like an outboard motor, it's housed more like an automobile engine.

** various comp structs have been merged into other places (eg. E_Comp_Zone is now just part of E_Zone where applicable), leading to a large deduplication of attributes

** awful E_Comp_Win is totally dead, having been replaced with e_comp_object smart objects which work just like normal canvas objects

** protocol-specific window management and compositor functionality is now kept exclusively in backend files

** e_pixmap api provides generic client finding and rendering api

** screen/xinerama screens are now provided directly by compositor on startup and re-set on change

** e_comp_render_update finally replaced with eina_tiler

** wayland compositor no longer creates X windows

** compositor e_layout removed entirely

* e_container is gone. this was made unnecessary in E18, but I kept it to avoid having too much code churn in one release. its sole purpose was to catch some events and handle window stacking, both of which are now just done by the compositor infra

* e_manager is just for screensaver and keybind stuff now, possibly remove later?

* e_border is gone along with a lot of its api. e_client has replaced it, and e_client has been rewritten completely; some parts may be similar, but the design now relies upon having a functional compositor

** window configuration/focus functions are all removed. all windows are now managed solely with evas_object_X functions on the "frame" member of a client, just as any other canvas object can be managed.

*** do NOT set interceptors on a client's comp_object. seriously.

* startup order rewritten: compositor now starts much earlier, other things just use attrs and members of the compositor

* ecore_x_pointer_xy_get usage replaced with ecore_evas_pointer_xy_get

* e_popup is totally gone, existing usage replaced by e_comp_object_util_add where applicable, otherwise just placed normally on the canvas

* deskmirror is (more) broken for now

* illume is totally fucked

* Ecore_X_Window replaced with Ecore_Window in most cases

* edge binding XWindows replaced with regular canvas objects

* some E_Win functionality has changed such that delete callbacks are now correctly called in ALL cases. various dialogs have been updated to not crash as a result

comp files and descriptions:

e_comp.c - overall compositor functions, rendering/update loop, shape cutting

e_comp_x.c - X window management and compositor functionality

e_comp_wl.c - Wayland surface management and compositor functionality

e_comp_canvas.c - general compositor canvas functions and utilities

e_comp_object.c - E_Client->frame member for managing clients as Evas_Objects, utility functions for adding objects to the compositor rendering systems

additional authors: ivan.briano@intel.com

feature: new compositor

removal: e_border, e_container, e_popup
2014-01-14 20:22:02 -05:00
Mike Blumenkrantz 0ba6584994 move dnd input window free to drag free function
fix T542 and other cases where dnd operations could permanently break mouse input
2013-12-02 09:06:20 -05:00
Mike Blumenkrantz 9ad177dd60 bugfix: add handler for xwindow hiding in dnd
this fixes the case where a drag is occurring on a window and the window is closed/hidden before the dnd leave event occurs. previously this would break things to a moderate degree and cause further dnd operations to fail, but now we bravely soldier onward
2013-10-03 10:12:44 +01:00
Mike Blumenkrantz 245c308bb3 after 4 hours of dndebugging gtk apps, I have solved all external dnd issues. 2013-06-12 13:35:55 +01:00
Mike Blumenkrantz 74baabb034 add drop handler "hidden" flag to block drops 2013-06-12 07:46:26 +01:00
Mike Blumenkrantz 90e91530f8 only try to drop into handlers which have been entered 2013-06-12 07:46:25 +01:00
Mike Blumenkrantz 6d398fa27d use drop handler base object layer when available to override drop handler object layer 2013-06-12 07:46:25 +01:00
Mike Blumenkrantz 219e197220 fix e_win dnd coord calcs 2013-06-10 06:18:12 +01:00
Mike Blumenkrantz 8df93a006d set coords for dnd leave events and remove weird FIXME 2013-05-30 11:28:42 +01:00
Mike Blumenkrantz 36068eaddf streamline dnd drag deletion, unify leave handlers
also fixes some recent dnd bugs
2013-05-30 08:23:19 +01:00
Mike Blumenkrantz bc86c5a8b5 efm now supports text/x-moz-url dnd operations when using efl 1.8 2013-05-29 13:45:48 +01:00
Mike Blumenkrantz db20c24837 dnd overhaul
* use separate list for active handlers to avoid unnecessary iterating

* use similar function to efm for detecting supported dnd types
2013-05-29 13:45:48 +01:00
Mike Blumenkrantz 89664c894e layout/comp "top at xy" functions now allow restricting based on visibility
fixes desktop gadget dnd
2013-05-21 13:52:11 +01:00
Mike Blumenkrantz 85022b2e40 fix dnd text-url/list handler to add trailing null before parsing into list 2013-04-29 09:36:06 +01:00
Mike Blumenkrantz 718dfef61d giant comp rejiggering commit #6:
* border->fx REMOVED, related border api REMOVED

* comp edc has new class of groups: e/comp/effects[/auto]
** these are effects which can be applied to any compositor object through the e_comp_win_effect* api and are written in embryo
*** two types - base and auto - base = manual, for use with animators; auto are "trigger and forget", for use as actual effects

* desk flip transition animations moved to comp effects and FIXED(ish)

* "zoom" effect renamed to "diagonal" for slightly less misleading name since it never did any zooming

* actual "zoom" effect added

* border hierarchy now as follows: cw->effect_obj swallows cw->shobj, cw->shobj swallows cw->bd->bg_object ?: cw->obj, if (cw->bd->bg_object) cw->bd->bg_object swallows cw->obj
** cw->effect_obj now used for all positioning and comp logic
** cw->effect_obj ONLY used for object transformation effects (moving, zooming, fading, etc)
** cw->shobj ONLY for comp visual/non-movement effects (focus effect, unfocus opacity, legacy shadows); this is a candidate for removal/rewrite in E19

* even more comp shape rewrites

* desk flip animation time now controlled by theme since edje doesn't support setting transition time in C; related config value removed

* desk flip transitions (in e_desk.c) rewritten

* various modules (evry/illume2) updated to use comp effects instead of fx offset

* desk flip configuration BROKEN(ish)
2013-04-15 08:39:16 +01:00
Mike Blumenkrantz 505cec1d91 giant comp rejiggering commit #5:
* border frame/object now drawn directly on compositor canvas

* border shadows now in border theme with edje hint, non-updated themes still receive comp object shadows FOR NOW

* e_border MOVE/RESIZE pointer mode defines are now e_pointer.h enums

* added BD_CHANGED() util macro for setting bd->changed and printing a debug line to assist in finding places where this all-important flag is wrongly set

* bd->bg_win removed entirely

* bd->pointer objects moved to compositor object; now only one pointer object exists for each compositor

* resizing windows now shows a new and totally-intended scaling effect for window contents

* some additional retooling of border deletion/free callbacks

* fixed lurking potential bug where window could recieve focus from autoraise timer after border had been deleted

* more comp shape improvements/rewrites

* desk transitions are now BROKEN(ish)

* various modules updated to not be totally broken with these changes
2013-04-15 08:39:16 +01:00
Mike Blumenkrantz 3702dceb16 fix dnd visuals when using multiple monitors 2013-03-13 08:07:07 +00:00
Mike Blumenkrantz 4ac3a18827 remove dnd todos since they're already implemented 2013-03-13 08:06:57 +00:00
Mike Blumenkrantz 70d68a30e0 giant comp rejiggering commit #4
* dnd canvas removed, dnd objects now drawn directly on compositor canvas

* dnd now correctly picks the top-most dnd-receiver location as its drop target instead of just using the first one in the list

* various other small changes to go along with this
2013-02-22 13:18:30 +00:00
Mike Blumenkrantz 8672080a60 fix comp canvas win finding for some dnd operations
SVN revision: 84238
2013-02-19 14:18:58 +00:00
Mike Blumenkrantz f36ecd9d3d giant comp rejiggering commit #2: popups are now objects drawn directly onto the compositor canvas with no xwindows of their own
* added a number of new e_comp functions and macros

* options for disabling effects on objects: this option does not currently have any effect

* all modules which used gadcon popups have been adjusted

* all modules which used input windows to detect close events for gadcon popups have been adjusted to use new popup autoclose functionality

* shelves are now always drawn on the compositor canvas, meaning objects will never get clipped by the shelf (ticket #1810)

* shelves no longer have an event object

SVN revision: 84060
2013-02-18 13:43:47 +00:00
Mike Blumenkrantz aa6a2d173d giant comp rejiggering commit because anything smaller would have broken something:
* remove xwin for container canvas: now drawn directly on the compositor canvas

* added SHAPE_DEBUG define for bored developers

* bindings now use new e struct for mouse/wheel events

* container+zone now get mouse events from smart callbacks instead of x events

* rename comp api namespace

* change comp underlay theme to have a swallow for the wallpaper

* add names to all zone/container/comp objects to make debugging much easier

* some minor related updates to go along with this

SVN revision: 83752
2013-02-07 13:20:07 +00:00
Mike Blumenkrantz 9e8e755cdf formatting: all at once
SVN revision: 82625
2013-01-11 10:34:29 +00:00
Lucas De Marchi 0675dd03a0 e: rename option use_composite to use_shaped_win
In order to move composite inside the core we need to kill the
use_composite option. However in some places it is being used to switch
between ARGB and shaped windows. It doesn't make much sense to keep the
advanced/engine dialog to let the user toggle this options if we have
composite always enabledm, but lets allow the user to shoot
himself on the foot (for now).

Next step will be to move the comp module files to core so user can't
unload it anymore.



SVN revision: 82433
2013-01-09 03:21:25 +00:00
Mike Blumenkrantz 654b7ee554 use event handler list macro
SVN revision: 80323
2012-12-06 09:04:18 +00:00
Mike Blumenkrantz 11b244883d fix weird dnd crash
SVN revision: 80321
2012-12-06 09:01:32 +00:00
Mike Blumenkrantz 46d2653dbc e dnd xds handler now passes type string param as well as data
SVN revision: 78157
2012-10-18 08:04:03 +00:00
Mike Blumenkrantz 512c561ca8 fix dnd for toolbar gadcons
SVN revision: 77862
2012-10-11 11:53:04 +00:00
Sebastian Dransfeld 436323bf59 e: cleanup layer handling
It seems people put random numbers as layers, so it is better to define
available layer numbers.

This patch also puts popups below fullscreen windows, as it sucks to get
popups during presentations. A better solution is maybe to put popups
above fullscreen, but have a presentation mode to put fullscreen windows
above popups?

SVN revision: 77293
2012-10-02 08:54:35 +00:00
Mike Blumenkrantz 053c02b070 ignore the completed flag on dnd-finished events since this (SHOULD be) always true; fixes bug where windows could be stuck in a never-ending drag and no longer respond to user input
SVN revision: 76818
2012-09-18 13:20:11 +00:00
Mike Blumenkrantz 3f9ccd5176 prevent dnd from dropping on an infinite number of targets
SVN revision: 76764
2012-09-17 14:35:04 +00:00
Mike Blumenkrantz da524d6d91 kill off dnd operation if drop cb returns false
SVN revision: 76722
2012-09-17 04:01:30 +00:00
Mike Blumenkrantz cfca3d8897 whoops, forgot to add in the xds check for dnd yesterday to make it actually work
SVN revision: 76494
2012-09-12 07:08:44 +00:00
Mike Blumenkrantz 20f84d3cee this took waaaaayyyyyyyyyyyyyy longer than I expected, but we now have support for XDS in efm, which will allow you to drag things from many other applications TO efm windows (eg. dragging a file from an archive in file-roller to an efm window will now extract the dragged file to the location of the window)
SVN revision: 76465
2012-09-11 16:17:24 +00:00
Mike Blumenkrantz 0922fa95c5 formatting
SVN revision: 76450
2012-09-11 09:07:54 +00:00
Leif Middelschulte b3011b6f45 Add safety check when freeing dnd handler.
SVN revision: 73010
2012-06-28 13:47:45 +00:00
Leif Middelschulte 04acb74d8b Revert "Merge branch 'randr'"
This reverts commit 5cd36c5dcb45ac48a1dc062fed5ac0d29c79efe3, reversing
changes made to 3bd4846cc3663a2488a47ed581045295fb322944.

SVN revision: 73009
2012-06-28 13:44:26 +00:00
Leif Middelschulte f939b664d7 Merge branch 'randr'
SVN revision: 73008
2012-06-28 13:35:19 +00:00
Vincent Torri c3b0637802 e17: whitespaces--
SVN revision: 72561
2012-06-21 06:19:43 +00:00
Vincent Torri c30aaf8dde e17: remove some shadow variables
SVN revision: 70190
2012-04-15 08:09:56 +00:00
Carsten Haitzler cdb864ed8e remove all traces of selecting engine in e17 - wont actuallly ever be
needed beyond compositor. :)



SVN revision: 66513
2011-12-26 06:24:59 +00:00
Hannes Janetzek a34c3869d5 e17: fix dnd to desktop
SVN revision: 58665
2011-04-14 13:46:39 +00:00
Gustavo Sverzut Barbieri 6f2213cb25 convert init/shutdown to EINTERN, move some to _update().
Do not abuse the concept of e_*_init(), make them call-once and those
that needed multiple call are renamed to e_*_update(). To make sure
convert them to EINTERN so the symbols are not exported.

Actually I guess too much is exported as EAPI while they should be
EINTERN, but that would require manual investigation, while this patch
was basically created with sed + grep.



SVN revision: 54795
2010-11-22 15:21:32 +00:00
Sebastian Dransfeld 0bae6927e5 After drop, we are no longer entered
SVN revision: 54382
2010-11-09 21:14:19 +00:00
Sebastian Dransfeld 139507ef51 event coords shoudl be reference coords
The receivers work in reference coords, so normalizing on the drop
handler is meaningless.

SVN revision: 54381
2010-11-09 21:13:56 +00:00
Sebastian Dransfeld af68b736a2 Don't override the drop handlers area
SVN revision: 54327
2010-11-08 14:05:19 +00:00
Sebastian Dransfeld 0e4e3b9e22 o_frame is the complete area for gadcon
SVN revision: 54324
2010-11-08 12:46:37 +00:00
Sebastian Dransfeld c5e189ecbd Remove pointless cache
SVN revision: 54321
2010-11-08 09:04:59 +00:00
Sebastian Dransfeld 70059bc37e Make sure we have a _xdnd object
If someone sends us a drop even though we didn't accept it, this will
segv.

SVN revision: 54194
2010-11-05 18:46:13 +00:00