Commit Graph

261 Commits

Author SHA1 Message Date
Mike Blumenkrantz ec9a888fcf more tweaks for manual window placement in client eval 2016-05-13 11:38:17 -04:00
Mike Blumenkrantz 685aafcd41 prevent double emission of E_EVENT_CLIENT_SHOW 2016-05-13 11:28:27 -04:00
Mike Blumenkrantz 030d083c73 ensure that client eval correctly handles retries on visibility-pending clients
ref 2854352bc8
fix T3636
2016-05-13 11:24:08 -04:00
Mike Blumenkrantz 2854352bc8 adjust some client eval parts to make manual placement work again
activating the window_move action doesn't require the client to successfully
be shown, and failing this check would cause the window_move action to be
deleted until the next restart
2016-05-12 12:05:59 -04:00
Mike Blumenkrantz 16797009c0 ensure child windows are placed on screen
when centering a child over its parent, checks were not made to ensure that
by centering the child it had not gone offscreen
2016-05-10 12:13:12 -04:00
Mike Blumenkrantz ef1772b8cb implement wl client session recovery
another small feature patch brought to you by insomnia

 #SamsungFeatures
2016-05-05 15:47:55 -04:00
Mike Blumenkrantz 4639062133 uninitialized vars in e_client_maximize_geometry_get()
CID 1354989, 1354990
2016-05-05 09:35:51 -04:00
Mike Blumenkrantz 20f1aa8727 feed mouse up events to internal wins before mouse out during action exec
ref 609276e12d

fix T3347
2016-04-28 12:00:17 -04:00
Eduardo Lima (Etrunko) 8acbf5d013 Fix warnings about uninitialized use of variables
src/bin/e_zone.c: In function ‘_e_zone_useful_geometry_calc’:
src/bin/e_zone.c:1272:14: warning: ‘geom.h’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (h) *h = geom.h;
              ^
src/bin/e_zone.c:1271:14: warning: ‘geom.w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (w) *w = geom.w;
              ^
src/bin/e_zone.c:1270:23: warning: ‘geom.y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (y) *y = geom.y + zy;
                       ^
src/bin/e_zone.c:1269:23: warning: ‘geom.x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (x) *x = geom.x + zx;
                       ^
src/bin/e_client.c: In function ‘e_client_maximize_geometry_get’:
src/bin/e_client.c:3754:16: warning: ‘y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (my) *my = y;
                ^
src/bin/e_client.c:3753:16: warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (mx) *mx = x;
                ^
src/bin/e_client.c: In function ‘e_client_fullscreen’:
src/bin/e_client.c:4032:21: warning: ‘h’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.h = h;
                     ^
src/bin/e_client.c:4031:21: warning: ‘w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.w = w;
                     ^
src/bin/e_client.c:4030:21: warning: ‘y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.y = y;
                     ^
src/bin/e_client.c:4029:21: warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.x = x;
                     ^
Signed-off-by: Eduardo Lima (Etrunko) <eblima@gmail.com>
2016-04-25 19:40:42 -03:00
Mike Blumenkrantz 2014de2fe6 Revert "do not revert client focus except for normal and dialog windows"
This reverts commit 5b119d437a.

I give this solution a B- for working but also totally ruining everything
2016-04-22 14:47:35 -04:00
Mike Blumenkrantz 5b119d437a do not revert client focus except for normal and dialog windows
fix T3432
2016-04-22 13:15:33 -04:00
Mike Blumenkrantz 5c0729221e only set "dialog" border for transient clients if window type is unset
fix T3157

from https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html :
_NET_WM_WINDOW_TYPE_DIALOG indicates that this is a dialog window.
If _NET_WM_WINDOW_TYPE is not set, then managed windows with
WM_TRANSIENT_FOR set MUST be taken as this type
2016-04-22 12:51:12 -04:00
Mike Blumenkrantz 4cbf81b1e8 add E_Client->saved.frame to handle mismatched csd states
if csd exists in only one of (before || after) a maximize/fullscreen,
this provides info so that the right size can be used when restoring
geometry

...again
2016-04-11 14:28:31 -04:00
Mike Blumenkrantz 6df8f5a806 Revert "do not update client saved states during maximize if client is animating"
This reverts commit 227776985e.

impossible case, too much wayland
2016-04-08 17:23:06 -04:00
Mike Blumenkrantz 4c6a4ea4ce track client maximize animation agents, delete upon beginning new animation
fixes an issue where unmaximize+maximize chaining would break client sizing
2016-04-08 16:45:56 -04:00
Mike Blumenkrantz cfca88bc95 simplify maximize animation re:maximize_override unsetting on no-animate 2016-04-08 16:43:46 -04:00
Mike Blumenkrantz 98934fb0e9 make (un)maximize_pre callbacks capable of rejecting the maximize operation
this is useful when subsystems need to know that a client wants to maximize
but need to delay that maximize for a later point
2016-04-08 16:07:40 -04:00
Mike Blumenkrantz a7adf21c88 add E_Client->maximize_anims_disabled to selectively disable maximize anims
for some clients it's impossible to animate resizing due to various race conditions
being created which will break the client
2016-04-08 16:01:55 -04:00
Mike Blumenkrantz b4b682cd6a make a number of client functions take const E_Client* 2016-04-08 15:57:21 -04:00
Mike Blumenkrantz 8d56ff3eec break out client maximize/unmaximize calc functions into preview functions
these enable "previewing" a client's size after toggling the maximize state,
not accounting for any csd or ssd sizing changes
2016-04-08 15:55:27 -04:00
Mike Blumenkrantz 227776985e do not update client saved states during maximize if client is animating 2016-04-08 12:23:19 -04:00
Mike Blumenkrantz 71c1669036 change client un/maximize_pre callback location to occur after safety checks 2016-04-08 12:22:47 -04:00
Mike Blumenkrantz 4cc66119c5 make e_client_has_xwindow() more wayland-only friendly 2016-04-08 11:51:18 -04:00
Mike Blumenkrantz e9bca1abaa Revert "add E_Client->saved.frame to handle mismatched csd states"
This reverts commit ae7af6b8ef.

this was a workaround for an entirely different issue, and it didn't even
solve that issue
2016-04-06 16:39:55 -04:00
Mike Blumenkrantz ae7af6b8ef add E_Client->saved.frame to handle mismatched csd states
if csd exists in only one of (before || after) a maximize/fullscreen,
this provides info so that the right size can be used when restoring
geometry
2016-04-05 16:52:50 -04:00
Mike Blumenkrantz f8bca98f35 reject client maximize attempts using identical maximize params 2016-04-05 15:00:54 -04:00
Mike Blumenkrantz 6617a8440c always set ec->maximize_override on unmaximize if maximize anims are enabled
this ensures that all cases of animation have the flag set
2016-04-04 14:01:30 -04:00
Mike Blumenkrantz 3cb11abb25 move x11 client icon caching to private functions in comp_x
ref 57ce6419e5
2016-04-01 14:16:21 -04:00
Carsten Haitzler 57ce6419e5 e icons: reduce mem usage (in x11) by a fair bit by de-duplicating
so i was profiling today .. leak hunting .. and i noticed. if you have
enough appss open - eg terminology, e uses a huge amount of memory...
for icons. terminology is 128x128 ...  thats 64k per icon. open up a
lot of terminology windows and we duplicate that 64k per every window
on the wm sside because we get the data. it would apply for any app
that sets a netwm icon. this can be come rather silly if you have like
100 terminals. it's worse with larger icons (eg 256x256 - 256k per
icon).

this puts in a simply list for shared icons and a lookup on fetch to
de-duplicate and share icon data. this should drop memory usage
nicely.

@improvement
2016-04-01 20:33:52 +09:00
Mike Blumenkrantz a352a6d197 only attempt to rescue offscreen clients if they are completely offscreen 2016-03-31 14:03:02 -04:00
Mike Blumenkrantz 609276e12d feed mouse out to internal clients upon activating a mouse binding
this prevents internal windows from effectively processing pending
mouse-up events

ref T3347
2016-03-30 10:25:55 -04:00
Mike Blumenkrantz 0d45b63a84 do not set initial changed state for new clients if they are ignored
this loops the client idler for no reason
2016-03-24 16:43:32 -04:00
Mike Blumenkrantz 893f3b1669 feed mouse-up events for all buttons on internal wins when activating a binding
bindings enforce compositor grabs, which will result in stuck canvas buttons and
break internal windows which have already received button presses

fix T3347
2016-03-24 14:03:36 -04:00
Mike Blumenkrantz b366d8bfb1 use agent objects for maximize effects
this fixes maximize effects on csd windows by providing an object which
will return usable geometry with evas_object_geometry_get()
2016-03-17 13:40:17 -04:00
Mike Blumenkrantz 39ce6e2d49 unify maximize animation checks+code 2016-03-17 13:40:17 -04:00
Mike Blumenkrantz 1b9d152eeb do not attempt to resize clients to 0x0 during res restore
ACK--
2016-03-14 14:27:15 -04:00
Mike Blumenkrantz d44de2e192 add window maximize animation
this has been implemented and working well in desksanity for a couple years,
and it's a trivial thing to bring over now that efx is available
2016-03-08 18:06:36 -05:00
Mike Blumenkrantz 103da25b94 unify client e_hints window size setting in move/resize callbacks 2016-03-08 18:06:36 -05:00
Mike Blumenkrantz beee048282 do not decrement e_comp->new_clients for non-new clients during _e_client_eval
this overflows the int!
2016-02-25 14:16:25 -05:00
Mike Blumenkrantz 87d4e254f0 pre-remove pixmap from x11 clients during del hook
this breaks the compositor!

ref 0ca200513e
2016-02-19 18:02:54 -05:00
Derek Foreman 0ca200513e Move pixmap free to client free from client destroy
Under wayland we need the pixmaps to exist until after the close
animations finish, even if clients can perform new rendering.

@fix
2016-02-18 12:31:31 -06:00
Mike Blumenkrantz 493f6f595b Revert "e - restart window positioning - fix it"
This reverts commit d0229b3652.

see following patches
2016-02-08 14:51:21 -05:00
Carsten Haitzler d0229b3652 e - restart window positioning - fix it
so every time i restart e i have my windows all messed up. it's
INSANELY annoying and time consuming every single time having to move
a dozen or more windows back to where they should be just because i
restarted e. i've narrowed it down to 2 places. 1 which is trying to
handle "out of screen" windows and during startup it seems things are
not quite stable yet as the randr code figures things out until the
event storm settles down.

when this is then fixed - another bit of code just shuffles windows up
all the time by a titlebar whcih is also supremely annoying. this is
the code that adopes a new frame for a window.

so the nasty hack to avoid piles of pain right now is for the first 5
seconds of e's life - don't do this stuff. at least you can now use e
and not be annoyed to hell and back every restart.

yes a nicer fix may be better - but that's going to take a lot more
time and patience and until then - this will do.
2016-02-06 11:31:01 +09:00
Carsten Haitzler e75af1536d Revert "e bg: remove debug printf"
This reverts commit 77c2a2a3d1.

oops - i forgot i had all this other debugging there
2016-02-06 10:29:04 +09:00
Carsten Haitzler 77c2a2a3d1 e bg: remove debug printf 2016-02-06 10:27:09 +09:00
Mike Blumenkrantz 8d94637e28 allow instant client mouse actions to persist until mouse up
if an action triggers on a window, the triggering mouse event should
not be passed to the window. the only way to determine this is if the
action object lives through the entire event
2016-01-21 14:43:52 -05:00
Mike Blumenkrantz 945eafd791 unify client mouse action ending
the code for this in most places was identical, but in some places it was
not, leading to behavior inconsistencies and potentially dangling objects
2016-01-21 14:29:10 -05:00
Carsten Haitzler e1369a24bd per-desk profiles - move to per screen and use elm derived profiles
this removes the per desktop profile config and replaces it with a
per-screen one that is tied to a specific display so it is far more
logical than per desktop. this allows e to set up different scaling
per screen for apps that use elementary for example via this derived
profile.

this of course is slightly problematic for e itself since it now uses
elm - as this will cause e to go kind-of-crazy with differing profiles
as it fights with itself and elm if 2 screens have different profiles.
this requires elm to be fixed to allow custom profiles per window.

this also currently won't switch profile of a window when you
reconfigure screens.

@feature

xx
2016-01-08 21:54:31 +09:00
Mike Blumenkrantz a08ac02e82 add config option for allowing sticky windows to receive focus reverts
since forever, sticky windows have not been allowed to receive focus after
various events, eg. desk flip or window close. in some workflows, however,
this may actually be desired behavior

disabled by default

fix T2837
2015-11-30 16:27:04 -05:00
Mike Blumenkrantz ac0cc26765 allow more client hooks to bypass delete check
failing to propagate these signals can result in a broken compositor
when a client is deleted before/during an operation
2015-11-24 21:42:22 -05:00