Mike Blumenkrantz
94633fbde1
fix wayland-only build
2017-07-14 18:40:50 -04:00
Mike Blumenkrantz
b7776798c7
don't attempt desk flips from client move handler
...
this should be handled by normal zone handlers now
2017-07-14 18:40:50 -04:00
Mike Blumenkrantz
07d4f3bcf6
don't call comp object cleanup functions for clients without comp objects
2017-06-30 10:25:18 -04:00
Mike Blumenkrantz
d0accb8e52
block pointer warping on override clients
...
this is never okay
2017-06-30 10:25:17 -04:00
Mike Blumenkrantz
bb1d7790b0
force shape queue when adding/deleting action client event grabber
...
ensure that this is normalized to provide consistent behavior before
and after actions begin/terminate
2017-06-26 14:48:03 -04:00
Mike Blumenkrantz
63f3fe949c
block "user" client resizes during comp client updating phase
...
resizing objects triggers clip resizes and further event feeding which
can propagate mouse events such that clients try to resize themselves
during the update phase, resulting in illegal compositor behavior
2017-06-24 12:34:12 -04:00
Mike Blumenkrantz
46fc9c0988
freeze client action event grabber stacking
...
ensure event stacking does not get modified by external handlers
2017-06-23 17:49:44 -04:00
Mike Blumenkrantz
dae4bd6576
feed mouse-up to action client from event grabber, then attempt to end actions
...
signal actions don't pass through the same init methods as other actions, and
so it becomes possible for the mouse-up to fail to terminate the action
2017-06-19 15:26:34 -04:00
Mike Blumenkrantz
339cbde731
reject client mouse move if coords match previous position
...
ensure that random event feeds don't accidentally trigger unwanted
move/resize attempts which can break the compositor
2017-06-16 15:00:12 -04:00
Mike Blumenkrantz
5e7ca478d0
route all mouse movements to action_client during action grab
...
ensure client receives all necessary mouse events
2017-06-16 15:00:12 -04:00
Mike Blumenkrantz
b48419c577
only remove left/right maximize when removing vertical if left/right is set
...
avoid accidentally removing horizontal maximizes
2017-06-16 15:00:12 -04:00
Mike Blumenkrantz
b4e96a0aea
feed mouse up during window maximize if the current window is being dragged
...
prevent window from accidentally toggling its maximize state repeatedly
2017-06-09 20:18:14 -04:00
Mike Blumenkrantz
f396d3fe42
re-enable zone edges during window_move action
...
this can now be sensibly handled without accidentally sending input to
every object on the canvas
ref T5552
2017-06-09 20:18:14 -04:00
Mike Blumenkrantz
d0f45a48a4
use event_grabber to simulate explicit grab during window move/resize actions
...
this grabs the client's frame as well as any existing edge objects during drags
ref T5552
2017-06-09 20:18:14 -04:00
Mike Blumenkrantz
41a5fe2708
delete client raise timer when beginning a move/resize operation
...
this breaks things in subtle ways
2017-06-09 20:18:14 -04:00
Mike Blumenkrantz
9f48fd5a9c
perform client raise before triggering move/resize BEGIN client hook
...
hooks may further modify stacking, so ensure any changes are done before
that point
2017-06-09 20:18:13 -04:00
Mike Blumenkrantz
f11aeaa8d0
do not perform zone updates on ignored clients during evas callbacks
...
ignored clients should not have a zone or a desk
2017-05-25 12:15:42 -04:00
Mike Blumenkrantz
a7cfbcd101
do not adjust unplaced transient client position on parent move/resize
...
this breaks placement
2017-04-07 16:08:38 -04:00
Mike Blumenkrantz
b4be7040a6
break out client transient restacking into function
...
this is nontrivial and breaks things when incorrectly applied
2017-04-07 16:08:37 -04:00
Mike Blumenkrantz
1bc600baba
do not arbitrarily center "lost" child windows, center them on the parent
...
if the parent is also lost, it will eventually be rescued and thus all children
will also be saved
#WeirdCommitLogs
2017-04-07 16:08:35 -04:00
Mike Blumenkrantz
d4b8404073
add a client's children to the skiplist during place routine
...
these should be ignored since they will be positioned relative to the parent
2017-04-07 16:07:25 -04:00
Mike Blumenkrantz
53233ec53f
center child clients on parent in parent_set()
2017-04-07 16:07:25 -04:00
Mike Blumenkrantz
bab204bde1
explicitly stack child client above parent when calling parent_set
2017-04-07 16:07:25 -04:00
Mike Blumenkrantz
e3faaf865e
do not set intermediate client geometry when doing fullscreen -> maximized
...
this provides a smoother experience for the transition as well as being a
more optimized operation
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
b223ed0981
add E_Client->saved.set
...
this indicates that saved geometry has been set and should not be
updated during maximize
currently only used to handle transition from fullscreen -> maximize
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
5c4f8a19a4
call "maximize" smart callback before "maximize_pre"
...
this callback induces ssd changes which affect the resulting geometry
and so it must be called before any size calculations are made
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
e3b3970b6e
adjust size for frame geometry in no-animation maximize path
...
this is based on window size, not surface size
also ignore coords if the size matches, animating just a positional
change looks dumb
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
e1e9e68515
force animationless re-maximize when unfullscreening
...
animating here results in the window resizing to its original (smaller)
size, then growing back to its maximized size
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
e71524c7bd
check pixmap size before triggering maximize animation
...
if pixmap size matches animation size then avoid animation calls since
this will look stupid
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
a0f7b03689
force e_client_unmaximize() to complete during fullscreen operation
...
it doesn't matter if the current client size doesn't match the unmax
size in this case since the size will be changed to fullscreen anyway
fixes maximize -> fullscreen transition
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
bfa3aacca3
always set E_Client->need_fullscreen when fullscreening
...
provide a method for determining whether a client is about to become
fullscreen during callbacks
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
ad15822f27
disable client maximize anims when unmaximizing before a fullscreen
...
this ensures accurate positioning of windows about to be fullscreened
2017-03-24 13:17:24 -04:00
Mike Blumenkrantz
9e5bf813f9
set signal move/resize clients as action_client internally
...
technically action_client is used to indicate that an e_action is
active, but functionally it really just means "this client is moving or
resizing" and the compositor makes certain adjustments based on this
2017-03-17 15:08:38 -04:00
Mike Blumenkrantz
be5ef5e6c4
always get zone geometry when placing clients
...
previous codepaths relied on new_client being set, which would have
fetched the zone geometry earlier. this is no longer necessarily the
case
2017-03-17 13:16:59 -04:00
Mike Blumenkrantz
d17fe0614e
check changes.pos during client maximize/fullscreen and adjust window coords
...
using these coords when the changes.pos flag is set should result in more accurate
results for positioning when removing the state
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz
5b9dec214e
only save client size info on maximize/fullscreen when protocol visible
...
a client which begins in one of these states must set its size again when
removing the state
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz
5720338072
perform frame adjustments before applying wm spec hints during unmaximize
...
e_client_resize_limit removes frame adjustments before performing calcs,
so ensure that the geometry passed is pre-adjusted to account for this
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz
adaad812d3
run e_hints_window_init() on new_client eval and not during placement
...
these are not related
2017-03-10 15:55:06 -05:00
Mike Blumenkrantz
60213325fc
only attempt to place clients which are protocol-visible
...
unmapped clients have no geometry
2017-02-24 14:15:38 -05:00
Mike Blumenkrantz
63b7111a1f
make client placement eval not dependent on new_client flag
...
this should just run if placed is not set for a valid window
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz
2f6f31f2a7
add client hook for UNIGNORE
...
UNIGNORE is the hook to watch for wl clients as they are added; the
ignore mechanism prevents most of the compositor from processing
clients. this is a stupid method from an api perspective since it's
different in x11 and wl, so it should probably be improved on in the future
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz
25240fb86d
future-proof client hook inlist initialization
...
manually initializing this meant it needed to be kept in sync with the
header, something that I'm unlikely to check every time client hooks are
added/removed
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz
51782fd5ee
Revert "e - wayland - fix double-resize if e wants a different initial size"
...
This reverts commit e1c3120689
.
this commit revealed a number of issues with the xdg6 implementation related
to unconfigured buffer management: see subsequent patches for a less
sledgehammer-y solution
ref 5497fadce4
2017-02-10 17:24:13 -05:00
Mike Blumenkrantz
12655becaa
ref clients during exe_inst deletion to avoid invalid access after free
...
in the case where clients are deleted during the same loop that they are
added to an exe_inst, the client will be destroyed before the instance's
delete event returns
ref T4963
2017-02-10 17:24:13 -05:00
Carsten Haitzler
e1c3120689
e - wayland - fix double-resize if e wants a different initial size
...
let's say you sue tiling or some module and it wants a window by
default to maximize or fill the screen or be size XxY ... this stops
the client first having a buffer smaller (or larger) and then sizing
down rendering 2 times (one of the renders is pointless). this makes
initial buffer render/show seamless as it should be in wayland.
2017-02-10 19:23:43 +09:00
Derek Foreman
73aecd73ab
Replace all timer_add with timer_loop_add
...
So yeah, I've literally used sed to replace every occurrence of
ecore_time_add() with ecore_timer_loop_add() because I'm reasonably
confident that no part of E has a legitimate need for timer based on the
exact current time.
It would be really nice if I'm not wrong. :)
The reason for this is the incredible spew of clock_gettime() calls I'm
seeing on an ARM system (that should have a vdso for gettime, but...)
This can amount to thousands of system calls per second.
#YOLO
2017-02-03 15:52:28 -06:00
Carsten Haitzler
3f2ea65112
e window stakcs - fix bugs with stacks by doing stack stuff in idle eval
...
this moves ensuring windows are centered on their parent even when
moved etc. for stack (and move the whole stack not just the specific
window) in the idle enterer int he pahse before all the client evals
take place. much cleaner!
2017-01-18 18:51:30 +09:00
Mike Blumenkrantz
df414cef65
do not perform frame coord adjustments for re_manage wayland clients
...
prevent mismatch of positions between restarts
2017-01-13 11:35:20 -05:00
Mike Blumenkrantz
d1bb23954f
break out code to set clients as transients for a parent
2017-01-13 11:33:36 -05:00
Mike Blumenkrantz
ec96143327
resolve client float-equal warnings
...
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-01-06 12:57:34 -05:00