Commit Graph

342 Commits

Author SHA1 Message Date
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