Commit Graph

65 Commits

Author SHA1 Message Date
Mike Blumenkrantz adc3c5ac81 clamp large windows to desk's useful geometry if smart placement fails
in the case where a window does not place with the smart placement algorithm,
clamp position to the top-left available position within the useful geometry
so that the titlebar will always be visible
2018-01-22 13:41:45 -05:00
Mike Blumenkrantz 4e1cbab3ff ignore all non-NORMAL type wl windows in e_place
this catches subsurfaces, drags, and popups, which were erroneously being
handled like obstacles during placement
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz 7ef2098f2a add docs for e_place_desk_region_smart() calc code
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
2016-11-07 13:06:50 -05:00
Mike Blumenkrantz 22add39474 break out repeated code from _e_place_desk_region_smart_area_calc() into separate function
no functional changes
2016-11-07 12:52:32 -05:00
Mike Blumenkrantz 65b6906614 break out e_place_desk_region_smart() area calcs into separate function
no functional changes
2016-11-07 12:40:51 -05:00
Mike Blumenkrantz 8df16724f7 clamp e_place calcs to zone geometry
fixes some cases where windows would place wrong due to placement code
checking offscreen coords
2016-11-07 12:27:34 -05:00
Mike Blumenkrantz 91d16899b1 fix e_place_zone_region_smart_cleanup()
this function was adding the same client multiple times, failing to cleanup
windows effectively, and misusing the skiplist functionality of e_place functions

fix T3654
2016-05-18 12:32:27 -04:00
Mike Blumenkrantz 189dce81f9 force cursor placement to obey useful zone geometry 2016-05-12 12:10:48 -04:00
Mike Blumenkrantz e0d1a572a1 bad copy/paste in _e_place_desk_region_smart_obstacle_add()
CID 1354988
2016-05-05 09:36:42 -04:00
Mike Blumenkrantz 53e0bf08bc further optimize window smart placement by reducing obstacle calcs
previously the obstacle list would build from the bottom up, skipping
fullscreen and maximized windows. this would lead to cases where windows
would be moved to avoid windows which were fully obscured, and also cases
where unnecessarily large amounts of looping would occur related to the
existence of maximized windows
2016-05-02 18:37:17 -04:00
Mike Blumenkrantz f36f2d16bc unify client filtering checks from e_place_desk_region_smart() 2016-04-21 14:48:49 -04:00
Mike Blumenkrantz fefdca1f00 redo e_place_desk_region_smart() to handle multiple screens
this code is unbelievably bad.

fix T3404
2016-04-12 13:33:54 -04:00
Mike Blumenkrantz 1facf33ddf ignore maximized+fullscreen windows when placing new clients
this should improve perf and placement

ref T3404
2016-04-11 12:02:00 -04:00
Mike Blumenkrantz 297dbc6bdf use zone obstacles when generating list of obstacles in smart place
this should also fix an issue where shelves on other screens were not
blocking window placement in some cases
2016-01-14 16:16:57 -05:00
Mike Blumenkrantz a1576f2027 unify a large portion of repeated code in e_place
this is still a nonsensical nightmare, but at least now it's all in
one place
2016-01-14 16:12:21 -05:00
Mike Blumenkrantz 5ec690512d use zone obstacles for window placement during shelf coverage calcs 2016-01-14 15:50:40 -05:00
Mike Blumenkrantz 291f4404f7 test given coordinates in smart window placement algorithm
the coordinates passed to this function were never used or tested for
being a valid placement location, resulting in any clients which started
with a given position being moved to a pre-existing smart placement test
case, usually the upper-left or lower-right corners of the screen

fix T1106
2015-12-31 12:57:47 -05:00
Chris Michael 0a94e8ba71 enlightenment: Make E build again with EFL from git
sed -i 's/EAPI/E_API/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-07 15:13:10 -04:00
Carsten Haitzler 27cf0d873c e_place - dont need extrra zone check here anymore 2015-04-28 07:51:35 +09:00
Carsten Haitzler 969541a93c e auto-placement - don't include shelves from other screens
unbeknownst to anyone e was placing around shelvs on OTHER screens...
this ended up with some .. odd results every now and again.

@fix
2015-04-27 16:54:15 +09:00
Mike Blumenkrantz 471dcb24cb __UNUSED__ -> EINA_UNUSED
this has been bugging me forever. __UNUSED__ is no longer a valid macro here.
2015-03-18 18:09:09 -04:00
Mike Blumenkrantz ba7c1ac49c remove E_Zone->comp member 2015-03-13 17:44:24 -04:00
Mike Blumenkrantz 91edd1ce2f E_CLIENT_*FOREACH() macros no longer take a E_Comp param 2015-03-13 15:45:07 -04:00
Mike Blumenkrantz b92fb1af3e fix visibility checks for shelves in client smart placement 2014-02-21 17:44:02 -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 9e8e755cdf formatting: all at once
SVN revision: 82625
2013-01-11 10:34:29 +00:00
Carsten Haitzler fff2214391 fix border placement to not move away from iconified/hidden windows...
:)



SVN revision: 73840
2012-07-14 02:18:36 +00:00
Vincent Torri c3b0637802 e17: whitespaces--
SVN revision: 72561
2012-06-21 06:19:43 +00:00
Stefan Schmidt fc52a4642d e: More y0 and y1 renaming to avoid global shadowing
SVN revision: 72532
2012-06-20 08:48:18 +00:00
Carsten Haitzler 183472fb39 fix placement code to respect desktop given not current visible stuff,
and add latent disabled feature to keep everythng on same screen/desk
off for now until config added.



SVN revision: 70370
2012-04-21 01:13:34 +00:00
Christopher Michael 2705a684ea Add UNUSED where needed.
SVN revision: 51310
2010-08-18 18:18:06 +00:00
Lucas De Marchi 6638a10e20 FORMATTING
* Remove vim modelines:
 find . -name '*.[chx]' -exec sed -i '/\/\*$/ {N;N;/ \* vim:ts/d}' \{\} \;
 find . -name '*.[chx]' -exec sed -i '/\/[\*\/] *vim:/d' \{\} \;

* Remove leading blank lines:
 find . -name '*.[cxh]' -exec sed -i '/./,$!d'

If you use vim, use this in your .vimrc:
set ts=8 sw=3 sts=8 expandtab cino=>5n-3f0^-2{2(0W1st0



SVN revision: 50816
2010-08-04 16:57:32 +00:00
Sebastian Dransfeld 78b294c4a8 make clang happy
SVN revision: 45176
2010-01-15 11:29:50 +00:00
Cedric BAIL f8c05999e4 * e: Cleanup use of Eina data structure.
Patch from Peter van de Werken <pwerken-e@a-eskwadraat.nl>.


SVN revision: 41916
2009-08-21 15:08:49 +00:00
Carsten Haitzler cb99a78862 fix placement to actually respect overlay allow of shelves
SVN revision: 41376
2009-07-17 01:42:37 +00:00
Cedric BAIL 1087de2397 Remove Evas list and replace them with Eina list.
No change for ->next and ->data access right now, as the patch is already
big enough.



SVN revision: 36962
2008-10-22 11:49:33 +00:00
Carsten Haitzler b70f5a0ecc e:
1. configure/build changes to allow cross-compiling painlessly
2. pager module namespace changes - this was still dirty afdter the namespace
cleanup, so clean it up
3. add a powersave subsystem - doesnt have an "automatic" way to turn on and
off right now, this i think is best provided by modules (that do things like
monitor acpi status's (eg close lid of laptop), AC power status etc. etc.
this allows e to nicely defer "power" expensive actions to avoid disk
spinups etc.
4. move to use the new ecore poller system  - discussed long ago as part of
power management/saving issues. now it exists
5. add a canvas idle flush call that helsp cope with the new shm greedy
software x11 engine stuff
6. use the new powersave subsystem where appropriate
7. fix non-zeroed/initted memory access in e_fm_main
8. fix mem leak for e menus
9. remove ipc handlers for changed/removed config values
10. use animaotr not timer for menu scrolls - then menu scrolls obey the fps
config
11. fix up timer/poll happienss of cursor idle stuff
12. remove avoid damage from popups for now - causing problems
13. change battery and temp readouts to b e shorter so they fit
14. pager can emit signals on focus change for mini-windows now
15. temperature module now uses a slave process and uses stdin/out to talk to
it and get output - this makes e smoother as in my expereicne i found getting
the temp on my laptop actually took like 200ms so e "hang" for 200ms while
reading the acpi files - so now the subprocess does it and just writesa back
to e when it gets it.

ecore:
1. add ecore_pollers. see the documentation on them in doxygen comments :)
2. fix timers to only go off when they have to - bug there that made e's
select time out a LOT more than it needed to. defensive coding hid the
problem. now fixed. e should be much more power friendly now.
3. formatting/niceness in ecore_exe stuff
4. some comments on comments with SIGIO ideas vs. select
5. add call to be able to add an idle enterer at the start of the list of
them, not just the end (as has been the default)
6. fix ecore_evas to support auto evas idler calls after 0.5 secs of idle in
all canvases - and to do it right
7. if argb destination - set the shape EVENT shape (to mask out events in
transparent regions much like shape does withotu translucency)
8. in ecore_x add support for the event shape

evas:
1. fix cache to work properly and not just always fill up (as it seemed to
like to think cahce useage dropped below 0 when it didnt and thus just
over-fill)
2. software x11 engine now ONLY uses shm segments - no ximages over the
socket. this ximage hack was there to avoid the 2 round trips involved in
setting up an shm image - now i mitigated that wih an shm image cache pool.
it keeps shm images around and repurposes them for new update regions if
appropriate. this means many fewer shm creates (about 1/100th the number) and
since we recycle the memory less 0 memory page filling by the kernel - in the
end, i recorded about a 10-20% speedup over the old software x11 engine.
simple tests i have seen up to 120% speedups. idle flush now does something -
it frees all the cached shm segments. it has a hard-coded limit of 4mb worth
of shm segments (or 32 segments - whichever comes first) to keep around. once
can never complain much about speedups methinks :). also evas will defer sync
until the NEXT frame is written - this means evas can calculate the next
frame of data while x dma's/copies the images to the screen at the same time
(if you hve a dual core or multi-cpu machnike or your xserver is able to use
DMA to copy image data to the screen/video ram then this should see a decent
speedup).


SVN revision: 33448
2008-01-11 07:33:57 +00:00
Eric Schuele a6aac74094 In all these whitespace cleanups, I did actually remove a few unused variables, and some dead code.
SVN revision: 32223
2007-10-31 02:41:52 +00:00
Carsten Haitzler 149d0afa5b and handle corner case for fulslcreen sized windows in auto-place. oops.
openoffice doesnt even get auto-placed. it explicitly asks for its own
placement and size. it's just badly behaved.


SVN revision: 31767
2007-09-20 00:17:39 +00:00
Carsten Haitzler 88ff932cd3 placement 100% avoids placing over/under a shelf not just "prefers not to".
really simple change.


SVN revision: 31766
2007-09-19 23:59:10 +00:00
Carsten Haitzler 144b5b6f56 printf--
SVN revision: 26872
2006-10-30 13:05:39 +00:00
Carsten Haitzler 63390c973c fix smart placement!
SVN revision: 26871
2006-10-30 13:05:03 +00:00
Carsten Haitzler 0a5e26b82b jamse brown ... errr... gadman is dead.
basically if moduels wish to put objects on a desktop - they now will have to
DIY and look after themselves. until we have gadcons with "free" layout that
do similar stuff - but this simply means module authors need to d a bit more
work. gadman code is unmaintained and a burden - thus removed.

also borders and e_win's have their own pointers now - this should nuke the
stuck pointer bug... :)


SVN revision: 24925
2006-08-20 04:48:27 +00:00
sebastid 22e7a09bcb Fix warning
SVN revision: 23299
2006-06-08 19:05:41 +00:00
Carsten Haitzler f0ae0e8d64 limit place coord to within the zone.
SVN revision: 23044
2006-06-01 05:43:54 +00:00
sebastid c2d2b54e25 Remove unused variables
SVN revision: 23031
2006-05-31 18:44:18 +00:00
Carsten Haitzler fbd972cdb9 e packages build again - also not much point having an enlightenment-data as
it's built as an arch specific package and it is intrinsically required by e
and cannot work without it nor is the data shared betwene e and other apps
unless e itself is installed too


SVN revision: 22260
2006-04-20 11:30:25 +00:00
Carsten Haitzler a17594e55a anitgadget placement policy
SVN revision: 20221
2006-02-03 06:13:32 +00:00
sebastid 6a638a7806 Fix EAPI warnings.
SVN revision: 19597
2006-01-07 10:39:46 +00:00
sebastid 69f5ef076d border positions is relative to container, not zone
SVN revision: 17065
2005-09-29 12:48:32 +00:00