1113 Commits

Author SHA1 Message Date
Ole Jørgen Brønner
28e05fd271 Helper to test size-constrained windows 2019-01-05 14:50:02 +01:00
Tor Hedin Brønner
95d2bafdec tests: port all to async 2018-12-20 22:43:11 +01:00
Ole Jørgen Brønner
c749cbd0c7 Add support for async/await based tests
Async tests should not call `next` themself
2018-12-20 21:27:30 +01:00
Tor Hedin Brønner
89f3e958e3 tests: clean up windows automatically 2018-12-20 11:15:00 +01:00
Tor Hedin Brønner
b7cdec7e38 add chaining connect utility 2018-12-20 11:10:34 +01:00
Tor Hedin Brønner
8c8ed0d44b tests: Add insertWindow
A bit hacky
2018-12-20 00:55:56 +01:00
Tor Hedin Brønner
43adecb19d tests: fix selectspace 2018-12-20 00:33:05 +01:00
Tor Hedin Brønner
f09d0416d0 test: select space 2018-12-19 23:47:17 +01:00
Tor Hedin Brønner
8d16ddf2a1 Add visible dialog test 2018-12-19 23:36:08 +01:00
Tor Hedin Brønner
eb83abe029 some more checks 2018-12-19 23:34:03 +01:00
Tor Hedin Brønner
a1b9fc44c5 tests: add reload test 2018-12-19 23:21:49 +01:00
Tor Hedin Brønner
33b8fbe753 Add basic testing framework
Adds its own assert so errors will be associated to the test.js buffer.
2018-12-19 21:40:04 +01:00
Tor Hedin Brønner
fec821033f Only signal move-done if nothing is tweening 2018-12-19 21:40:04 +01:00
Tor Hedin Brønner
2b61a909db Another wrong global.get_pointer() usage 2018-12-19 21:28:47 +01:00
Ole Jørgen Brønner
21039ec6ec Bugfix: Pointer always warped when moving it to the bottom monitor 2018-12-19 21:24:04 +01:00
Ole Jørgen Brønner
0f745e0c86 Kill the built-in workspace animation more reliably (v3.28)
Specifically fixes (only in v3.28) that built-in workspace animation is visible
when moving mouse between monitors (changing the active monitor).

This problem appeared in 18eb343, disappeared in a8b23aa, and
reappeared in 9389d90 (consecutive commits)

I assume that prior to 18eb343 our own animation was active during the workspace
change. 18eb343 prevented a bunch of animations that didn't have any effect from
starting. Eg. ensureViewport and layout when they don't change anything. No
("paperwm") animation is thus run when changing the active monitor.

The workspace animation (v3.28) can also be suppressed by using
wm._blockAnimations prior to changing workspace.

Doing this when the navigator is active is easy, but there doesn't seem to be
suitable signals to catch all cases. (eg. we can't force our "workspace-changed"
handler to run before other handlers)

PS: This fix does not work for dialog windows so they're still
"workspace-animated" on monitor changes.
2018-12-19 21:07:29 +01:00
Ole Jørgen Brønner
1cc4c2f0d6 Regression: Prev commit (af3623e) broke new window animation
Try removing the Navigator.navigating and inPreview checks. In those cases the
clone should be visible.

Without those checks (together with the clone.get_parent check?) dialogs created
during animation is not hidden.

Also note that the unmapped description in af362e was wrong - unmapped is only
true a short period after the window is created.
2018-12-19 20:05:12 +01:00
Ole Jørgen Brønner
af3632e900 Bugfix: dialogs created during animation was hidden
To reproduce: Close a window with a confirmation dialog while the minimap is
open (eg. gnome-terminal with a running program)

A umapped window is either
1. a window that has not yet been inserted into a space/the scratch layer
2. a window we don't manage (eg. dialogs) meaning its clone is unused and should
   not be shown.

Note that it's not unlikely that we'll start to manage dialog-clones in the
future (#92)
2018-12-19 17:10:50 +01:00
Ole Jørgen Brønner
7ade1ef1de Revert "Mark windows as unmapped while changing between monitors"
This reverts commit 48ac0268f6.

Did not seem to resolve the issue and it sometimes causes windows to be stuck in
a "unmapped" state. Eg. when suspending, resuming and unlocking on ubuntu 18.04
gnome 3.28 windowEnteredMonitor is called on the visible windows - marking them
as unmapped.
2018-12-19 16:39:39 +01:00
Tor Hedin Brønner
33db8b137b Fix typo 2018-12-19 13:03:38 +01:00
Tor Hedin Brønner
57cbc3f586 focus_handler: raise the first window in a space too
Starting on the first window in a space, creating a new window and then closing
it would leave the user with the second window active instead of the first as
expected. This happened because we would never fix the stack order of the first
window.
2018-12-18 17:40:22 +01:00
Tor Hedin Brønner
99e15f3a53 Remove any clips on WindowActors when floating 2018-12-18 15:24:14 +01:00
Tor Hedin Brønner
7a9548bbba fix typo 2018-12-17 22:21:57 +01:00
Tor Hedin Brønner
d198a2a088 Don't use utils in extension.js
If utils fails to load we're not getting proper error messages as we're using it
outside a try block. Use `log` instead.

SyntaxErrors still doesn't return a proper trace unfortunately, though that's
perhaps better fixed in tooling. The alternative would be to run `Reflect.parse`
on the module file in the catch block returning that error instead...
2018-12-17 22:21:57 +01:00
Tor Hedin Brønner
8c086081a0 Get rid of pointer.get_position
pointer.get_position can report the wrong coordinates, use the simpler
global.get_pointer() instead.
2018-12-17 22:21:57 +01:00
Tor Hedin Brønner
529102add1 Add animation-time setting 2018-12-17 22:21:57 +01:00
Tor Hedin Brønner
74dd4bd068 Remove stray log 2018-12-17 20:54:49 +01:00
Tor Hedin Brønner
42f1c7e83e space.removeWindow: update space.visible 2018-12-16 13:56:05 +01:00
Tor Hedin Brønner
a11b0cd5f3 fixup! Revert "moveDone: only move reactive windows"
Lost the tween guard in the previous revert.
2018-12-15 21:53:23 +01:00
Tor Hedin Brønner
39965a2d42 Revert "moveDone: only move reactive windows"
This reverts commit b138e9083e.

Revert "Fix fullscreen reactivity again"

This reverts commit d5bd0cf023.

This would've made it likely to trigger the mouse «freeze» on x11.
2018-12-15 21:43:16 +01:00
Tor Hedin Brønner
d5bd0cf023 Fix fullscreen reactivity again
`unMovable` windows would never become reactive.

fixes b138e9083e
2018-12-14 21:12:55 +01:00
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