Mike Blumenkrantz
ef6197b119
do not force client focus setting after calling e_desk_last_focused_focus()
...
in some cases focus setting must be deferred, and forcing focus in these cases
will create focus bugs
ref 9ae24a3a4a
2017-09-01 13:40:12 -04:00
Carsten Haitzler
9ae24a3a4a
e client focus - fix focus if moving focused window to new desk - long
...
fix client focus the very very very long way vs
418319fc94
2017-09-01 19:29:03 +09:00
Carsten Haitzler
418319fc94
e client focus - fix focus if moving focused window to new desk
...
if the window being moved to a new desktop is focused, then ensure
after the move to restore focus to the last focused in the focus stack
for this desk to something stays focused.
@fix
2017-08-30 16:13:50 +09:00
Mike Blumenkrantz
ec047b1a98
perform client zone updates on canvas move/resize when not ignored
...
overrides still need zone updates here
2017-08-25 14:47:10 -04:00
Carsten Haitzler
da791a0bf5
e mixer - handle pulse exit/disconnect and not keep e client sinks
...
we keps e client sinks even if we were dicsonnected from pulse... this
caused fun crashes. fix
@fix
2017-08-20 01:02:03 +09:00
Mike Blumenkrantz
5f87fbca2e
only set new clients to current desk if desk has not yet been set
...
placement policies can override setting windows onto the current desk
2017-08-18 15:52:50 -04:00
Mike Blumenkrantz
2b984e68b9
add MISC client property event to be manually triggered whenever misc props change
...
there's too many properties to create flags/events for all of them, so just use this
if it's one of the many misc props
currently only used for skip_{pager,taskbar,winlist}
2017-08-18 15:52:50 -04:00
Carsten Haitzler
4fe7827af2
fix fallthrough warnings and tag as fallthrough
...
this code was intending to do this.. so tag as such
2017-08-05 12:37:39 +09:00
Mike Blumenkrantz
cb3911cc3a
make client size hints apply more accurately
...
* clamp min/max first
* only apply step adjustments when obeying min/max sizes
* make aspect calculations more accurate
2017-08-04 16:05:16 -04:00
Mike Blumenkrantz
2c3f65d6f8
apply client hints when rescaling a client
...
ensure rescales obey hints
2017-08-04 16:05:15 -04:00
Mike Blumenkrantz
4e86fb57e1
restack child windows on parent_set() even if child is ignored
...
ensure that this happens as expected since it may not occur elsewhere for
some cases
2017-08-04 16:05:15 -04:00
Mike Blumenkrantz
0b887245cc
remove left/right maximize before removing vertical maximize
...
ensure maximize states are removed accurately and in the right order
ref b48419c577
2017-07-28 15:44:55 -04:00
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