Summary: Center a newly created dialog window when it is displaying off-screen. Fixes T2419
Reviewers: zmike
Subscribers: cedric
Maniphest Tasks: T2419
Differential Revision: https://phab.enlightenment.org/D2646
this follows 56cabf59c6 then
4e5521b4d8 where i have been trying to
fix a crash with e client and comp win references etc. i have gone
over all referencing with a fine tooth comb and found all the nigglies
i can., no leaks now, no crashes, no valgrind complaints etc. so i
call this fixed now. as best i know this is new in e20, so not a
backport fix
delfn's on desks being referred to as profile.wait_desk were never
cleared when client was freed. als the desk itself never got an obj
reference - fix that and ref/unref it.
this came in a patch that I take full responsibility for not adequately reviewing at the time.
the names are confusing and counterintuitive, and it does not properly include the client namespace.
there is only one E_Comp which can now be accessed by the e_comp global.
if you're editing a file with some uses of these deprecated functions, replace their usages with appropriate references to this variable
pass -Wno-deprecated-declarations to ignore these warnings during build
Summary: since maximized valuable is used in _e_client_frame_update, so the valuable should be updated.
Test Plan:
(1) run any application.
(2) Maximize the app by key binding.
(3) Change the border type.
(4) Unmaximize the it by key binding.
(5) try to maximize it again, but couldn't
Reviewers: zmike
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1357
* if unplaced, place centered on transient-for on initial placement
rather that screen centered
* if transient.move and transient.resize options follow options are on
make transients floow as intended
i know it's not that pretty, but this brings back the
E_CLIENT_HOOK_CANVAS_LAYOUT as there just is no viable replacement and
thus breaks 2 modules. this fixes T1402 - we chances are just that
this needs a separate hook point as it isnt a per-client but a
per-comp hook.
Summary:
1. fix window profile change request with wrong x window id
2. refactoring desktop window profile codes to handle e_client_desk_set correctly
Test Plan:
1. enlightenment: Settings Panel -> Screen -> Virtual Desktops -> Check "Use desktop window profile" -> Apply
2. open an efl app on 1st desktop (0-0)
3. set a window remember on efl app window
4. go to 2nd desktop (1-0)
5. open an efl app again. it should be positioned on the previous desktop (0-0)
Reviewers: zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D926
this was a neat experiment, but apparently it's not going to be usable for a long time in anything outside efl/elm
This reverts commits f87b9900fa, a49cede790, 81038f8d02, 47cfb31752.
when this feature was added, its behavior was naively set to ignore repeated desk changes. it also was not adequately tested, resulting in a frustratingly large number of bugs.
with these changes, window profiles should no longer be the cause of client visibility being broken as caused by a failure to change desk.
fix TChutney
This reverts commit 1f8975d546.
totally wrong. do not externally set this.
this issue, which I cannot reproduce, is almost definitely caused due to the fact that _evas_object_layer_set() effectively calls evas_object_raise() without triggering intercept callbacks
Instead of rolling our own we go with a known working UUID implementation
here. Dependency should be easy enough as more or less every Linux system
is shipping it anyway.
The code was zeroing the flag that tells e to change the border after
the callbacks about frame changes. This means that one couldn't change
the border from within those callbacks. This commit fixes this issue.
_e_client_hook_call() returns false when object refcount hit 0... ie..
it's been deleted. it's simply invalid memory access to then del the
object thats already gone to 0 refcount and been deleted/freed.
Summary:
there was a problem that the app like gnome-terminal had not been restored to origin size after maximization.
I think that's because E overwrite the data of saved.x/y to maximized size in ConfigureRequest handler.
The reason why ConfigureReuqest happen is that the window tried to resize itself properly, since E resize window without regard of size hints.
Reviewers: zmike, seoz
CC: cedric
Differential Revision: https://phab.enlightenment.org/D633
it seems i have an override-redirect window just off the bottom-right
of my screen - i think its the scim input panel status. what happens
is it is "managed" by comp but then deleted (_e_comp_x_hook_client_del
called), BUT _e_comp_x_object_add is called with a deferred event for
that client to add it again (likely this is a race) which finds he
client in a state of not having comp_data as the E_FREE in
_e_comp_x_hook_client_del() frees it and sets it to NULL. move the
comp_data free to the actual client free (which is the last time a
client is valid at all) solves this.
previously there were cases where client focus was not explicitly unset on delete, which resulted in expected client hooks not being called and minor inconveniences to occur
this option provides the functionality which was intended by the old and broken "raise on focus" option. it raises windows ONLY when reverting focus in cases not directly triggered by the user or any application
this flag allows a client's layer to be changed instantly with no protocol-level checks or work, allowing compositor effects to do their work more easily
* finish updating for E19 api
* fix visibility changing on sources
** use that shelf data item added in previous commit to detect shelf visibility
* fix sizing (but not scaling :() and positioning of sources
* also fix stacking
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