Commit Graph
1082 Commits
Author SHA1 Message Date
Tor Hedin Brønner c36cdebc99 Window clones: only allocate when WindowActor is allocated
Before we fixed the clone's position everytime it was allocated, eg. whenever we
would scroll a pixel.

Insetad we listen on the WindowActors allocation signal, which happens far less
as we don't move the WindowActor around much.
2018-12-14 17:51:22 +01:00
Tor Hedin Brønner b138e9083e moveDone: only move reactive windows 2018-12-14 16:44:46 +01:00
Tor Hedin Brønner fbd8f439b0 moveDone: record placeable tweening windows as visible
If we start animating before the window's tween is done we're suddenly in an
invalid state.
2018-12-14 16:42:44 +01:00
Tor Hedin Brønner 8ab7e79820 print_stacktrace: adapt to gnome-shell-mode's log handling 2018-12-14 13:14:53 +01:00
Tor Hedin Brønner e5938191e1 gestures: don't force edge alignment when selected is visible
If the selected window is still visible we don't forc alignment with the monitor
edges, making it possible to eg. center the first/last window with a touchpad.
2018-12-14 10:36:50 +01:00
Tor Hedin Brønner 48ac0268f6 Mark windows as unmapped while changing between monitors
This should fix moving windows between monitors again, and might solve the
scaling issue too.
2018-12-11 15:24:56 +01:00
Tor Hedin Brønner e7c0dd6b15 shell.sh: don't die on input from terminal 2018-12-10 22:30:39 +01:00
Tor Hedin Brønner 2d9332b283 Horizontal swipe: never end up in a offscreen window
In the case of overshooting the last/first window we could end up not having a
window under the pointer, resulting in going back to the starting window.

The code indicates that the intention was always to ensure at the end :/
2018-12-10 22:02:29 +01:00
Tor Hedin Brønner 7a894a9044 remove_handler: run removWindow before cleaning dead windows
Last commit caused a bunch of issues when closing windows as
`removeWindow` accesses the clone which no longer was there.
2018-12-10 21:29:52 +01:00
Tor Hedin Brønner b38fb8c11f Clean up window clones
This might be unnecessary, as I assume the clones will get garbage collected
automatically, but that does assume it's not part of the scene graph (ie. it
dosen't have a parent). Just as well to do it explicit.
2018-12-10 20:52:54 +01:00
Tor Hedin Brønner f092bfe642 moveDone: guard against doing anything with tweening windows
On wayland `move_frame` right after a resize might kill the resize for some
reason. We therefor delay moving windows that are tweening.
2018-12-10 20:52:54 +01:00
Ole Jørgen Brønner 8d8591d3c1 Ignore override-redirect windows completely
After a99c151 the we caused lots of
  meta_window_make_above: assertion '!window->override_redirect' failed
warnings in the log.

Most likely best to leave such windows alone.
2018-12-10 19:28:29 +01:00
Tor Hedin Brønner f59508d69b Partly revert last commit
Selection highlight logic dosen't support setting selectedWindow outside
ensureViewport.
2018-12-10 10:02:21 +01:00
Tor Hedin Brønner 32459be4db removeWindow: cleanup
Let `layout` take of `ensureViewport`.
2018-12-10 09:32:05 +01:00
Tor Hedin Brønner 4b3ff3ac93 Premeptively remove dead windows on focus
`worspace:window-removed` runs after `focus` which means ensureViewport can get
us into a bad state. Remove any dead neighbours while we're fixing the correct
stacking order.

In particular when we had this setup, where the numbers is the stacking order,
and `2` isn't fully visible:
| 3 | 1 | 2 |

closing `1` would focus `2` and `ensureViewport` would start scrolling it into
the view. `layout` would then remove `1` resulting `2` moving further (the width
of `1`) to the left.
2018-12-10 09:23:44 +01:00
Tor Hedin Brønner 65420bf662 layout: don't count dead columns
If all the windows in a column is dead (ie. no WindowActor) we shouldn't update
the position for next column.
2018-12-10 09:12:24 +01:00
Ole Jørgen Brønner 43974ba50c Minor fixes keybinding system
- rebinding a schemaless binding lost it's implied options
- fix showNavigator example
- wrong documentaion in README
2018-12-09 14:53:53 +01:00
Tor Hedin Brønner 9c645bd6eb gestures: clean up logging 2018-12-09 12:06:32 +01:00
Tor Hedin Brønner 1222074722 Rename noAnimate -> inGrab which is what it actually is 2018-12-09 12:06:32 +01:00
Tor Hedin Brønner d580c3669c insertWindow: don't force animations 2018-12-09 11:56:53 +01:00
Tor Hedin Brønner 68081fa2a3 layout: give unchanged windows a chance to become reactive 2018-12-09 11:56:53 +01:00
Tor Hedin Brønner c3e0715f8a remove more forced ensureViewport 2018-12-09 11:56:53 +01:00
Tor Hedin Brønner d4b0022f2b removeWindow: don't force animate on all windows
There's no longer a reason to force `ensureViewport` here. In particular when
closing a window, the windows to the left won't wait for the windows on the
right before becoming reactive.
2018-12-09 11:56:53 +01:00
Ole Jørgen Brønner 2137dddfa0 Bugfix: SSD frame buttons (minimize, ...) stopped working after 5d0f037d3
button-press on these buttons trigger a grab (GrabOp.FRAME_BUTTON).

Our grab handler run startAnimate which tracks the background -> the
button-press is stolen

Only happened for server-side-decorated windows (make sense that the grab is not
triggered for CSD windows)

Regression after: 5d0f037d3
2018-12-09 11:25:17 +01:00
Tor Hedin Brønner 36f21e480d Fix inserting existing windows 2nd take
Syncing clone positions to the frame on addWindow doesn't work for slurp/barf.
Do it in insertWindow before we `addWindow` and run layout.

fixes 6d51bc2c24
2018-12-09 06:02:17 +01:00
Ole Jørgen Brønner a99c1511dc Make windows not added to the space "always on top"
This avoids some ugly situations where dialog-type windows was very hard to
focus. Windows that lie below the tiling is usually not possible to click so one
would have to use alt-tab, the overview, etc..

Our own preference UI behaved like that :D (but only on X11)

Making them always on top isn't 100% ideal though - especially since transient
windows doesn't move when their parent move. (so they quickly end up above
other windows)

The search dialog of gedit is an example. Prior to this commit it would not stay
on top when gedit was moved away. It did "flash to the top" during animations
though..

Semirelated: #40
2018-12-08 20:29:12 +01:00
Ole Jørgen Brønner 0f7d5930f4 cycle-width: use gap and margin prefs when calculating available width
This ensures two windows of "compatible" width will have room regardless of the
gap and margin values.
2018-12-08 19:26:33 +01:00
Ole Jørgen Brønner acb9af0789 toggle-maximize-width: more robust detection of "is maximized"
Simply check if the window is currently wide enough to be considered maximized.

Before we used `unmaximizedRect` to track maximized status. That is of course
brittle since the window can change size in many way. We cleared
`unmaximizedRect` in cycle-width (but it has been buggy for along time :P)

Note: using the size-changed signal is not trivial for this purpose: the signal
doesn't provide the previous size and it is async in wayland and synchronous in
X11.. (after running move_resize_frame)
2018-12-08 18:57:58 +01:00
Tor Hedin Brønner 6d51bc2c24 Fix inserting existing windows
We silently relied on a tween being active after layout when inserting existing
windows. Set the clone's initial position in `space.addWindow` before layout to
fix this.
2018-12-08 18:09:26 +01:00
Tor Hedin Brønner 5815f0f3b9 clipping: fix clipping right after resize
Actors width/height aren't updated correctly on windows `size-changed`, use the
buffer rectangle instead which is correct.
2018-12-08 17:12:07 +01:00
Tor Hedin Brønner 9b29a2c1a8 resizeHandler: don't force ensure 2018-12-08 17:12:07 +01:00
Tor Hedin Brønner 7b29fa1c9b layout/moveDone: only resize/move windows when needed 2018-12-08 17:11:53 +01:00
Tor Hedin Brønner bcd84e5cc8 selectSpace: Improve move window animation 2018-12-08 16:18:51 +01:00
Tor Hedin Brønner b9afb700b1 Add tags to gitignore 2018-12-08 16:16:40 +01:00
Tor Hedin Brønner 33a04b4a9b Fix fullscreen reactivity
The tween could prevent the window getting activated properly.
2018-12-08 16:16:40 +01:00
Ole Jørgen Brønner 3927af08c3 Cleanup: remove bitrotted tile-visible action 2018-12-08 16:09:40 +01:00
Ole Jørgen Brønner 4b3e24d7ef Improve installConfig (remove annoying warning)
Don't display "Failed to install..." warning when a first-user already have a
user.js config

Still track has-installed-config-template so it's possible to remove the user
config dir without it reappearing on each extenstion init.
2018-12-08 15:45:05 +01:00
Tor Hedin Brønner 3675770c55 Allow X to select windows while animation is in progress
This should be done for wayland too, but we'll need to figure out the correct
interaction with swiping.
2018-12-08 12:11:51 +01:00
Tor Hedin Brønner ffabbcb85a layout: better tween guard
Turning off fullscreen would desync `c.targetY` and `c.y`. Simply make the guard
robust by making sure they are synced before foregoing tweening. This should
work better than making sure that we're always syncing the target everywhere.

We also shouldn't need to tween when `widthChanged`, if the clone doesn't move
we should be able to activate the window. If the layout initiates a scroll
`moveDone` won't activate any windows anyways.
2018-12-08 12:09:42 +01:00
Tor Hedin Brønner 4de9d9a3dc Space.layout: only tween if needed
When clones are active windows can't take pointer input. 9389d90cc made it
possible to only activate windows who's clone isn't animating.

We can take advantage of this by not forcing `ensureViewport` when a grab ends
triggering a moveDone activating the grabbed window immediately if it ended in
an already correct position.
2018-12-07 23:10:49 +01:00
Ole Jørgen Brønner 5d0f037d3e Track the background actor during animation (X11)
This ensures all mouse input is redirected to clutter.

As #80 shows, weird things can happen when mouse clicks occurs in the region of
a "visible" X11 window with a hidden actor.

Fixes #80
2018-12-07 22:16:27 +01:00
Tor Hedin Brønner 2483c0b04e prefs: Add hot corner and overview toggles 2018-12-07 07:14:15 +01:00
Tor Hedin Brønner 9389d90cc4 Fix last commit, tweens are still active on onComplete...
Apparently the tween isn't tecnically done when onComplete is run, so
`tweenCount`/`isTweening` isn't correct.

Checking `isTweening` the clones does work, probably since they're queued
before cloneContainer.
2018-12-06 21:47:08 +01:00
Tor Hedin Brønner a8b23aa451 regression: Fix new window animation
Removing `space.moving` broke a silent assumption used by `insertWindow`.

The problem is caused by not detecting layouts that doesn't scroll the space.
Detect it by guarding against any active tweens.
2018-12-06 21:27:21 +01:00
Tor Hedin Brønner 18eb343af3 Avoid getting stuck in preview state after swiping
`space.moving` is obsolete so remove it. We already guard against starting new
animations with the same target in `move_to`, which means keeping track of the
«moving» window is unnecessary.

I also cleaned up the code a bit, removed a bunch of unused parameters.

The bug is a good indication why `space.moving` was pretty ad-hoc and bad:

Returning when `space.moving == metaWindow` assumed there was already a tween
running, which we didn't want to replace. Swiping breaks this assumption by
removing any existing tweens. So a swiping to a already «moving» window would
result in ensureViewport returning early, never calling moveDone.
2018-12-06 20:32:16 +01:00
Tor Hedin Brønner d0c253f892 Drop explicit support of 3.26
I have no idea if things work on 3.26 so drop support, I'm also guessing that
3.26 is rarely used. 3.28 is pretty common, eg. through Ubuntu LTS.
2018-12-06 12:18:36 +01:00
Tor Hedin Brønner aa124d20b9 shell.sh: reset config on start
Also fixed a typo
2018-12-06 10:10:07 +01:00
Tor Hedin Brønner 719d01e1f9 Add only-scratch-in-overview setting, defaults to false
Only show scratch windows in the overview, toggled by `only-scratch-in-overview`
setting.

see discussion:
https://paperwm.zulipchat.com/#narrow/stream/174110-design/subject/limit.20overview.20to.20scratch.20windows
2018-12-06 10:02:54 +01:00
Tor Hedin Brønner fc40aaa6ae kludges: add some save/restore method nicery 2018-12-06 09:56:09 +01:00
Tor Hedin Brønner 7593ba0aa4 readme: add zulip badge 2018-12-05 10:14:24 +01:00