Skip to content

Commit 95bac3b

Browse files
committed
MultitaskingView: Fix occassions where the active workspace could be wrong
1 parent d1c6029 commit 95bac3b

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

lib/Gestures/GestureController.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ public class Gala.GestureController : Object {
284284
*/
285285
public void goto (double to) {
286286
var clamped_to = to.clamp ((int) overshoot_lower_clamp, (int) overshoot_upper_clamp);
287-
if (progress == to || recognizing ||
287+
if (recognizing || timeline == null && progress == to ||
288288
timeline != null && clamped_to == timeline.value_to // Only allow overshoot if there's no ongoing overshoot animation to prevent stacking
289289
) {
290290
return;

src/Widgets/MultitaskingView/MultitaskingView.vala

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public class Gala.MultitaskingView : ActorTarget, RootTarget, ActivatableCompone
9191
unowned var manager = display.get_workspace_manager ();
9292
manager.workspace_added.connect (add_workspace);
9393
manager.workspace_removed.connect (remove_workspace);
94-
manager.workspaces_reordered.connect (on_workspaces_reordered);
94+
manager.workspaces_reordered.connect (sync_active_workspace);
9595
manager.workspace_switched.connect (on_workspace_switched);
9696

9797
workspaces_gesture_controller.overshoot_lower_clamp = -manager.n_workspaces - 0.1 + 1;
@@ -329,6 +329,8 @@ public class Gala.MultitaskingView : ActorTarget, RootTarget, ActivatableCompone
329329
workspaces.insert_child_at_index (workspace, num);
330330

331331
workspace.window_selected.connect (window_selected);
332+
333+
sync_active_workspace ();
332334
}
333335

334336
private void remove_workspace (int num) {
@@ -356,12 +358,16 @@ public class Gala.MultitaskingView : ActorTarget, RootTarget, ActivatableCompone
356358
workspace.window_selected.disconnect (window_selected);
357359
workspace.destroy ();
358360

359-
workspaces_gesture_controller.progress = -manager.get_active_workspace_index ();
361+
sync_active_workspace ();
360362
}
361363

362-
private void on_workspaces_reordered () {
363-
unowned var manager = display.get_workspace_manager ();
364-
workspaces_gesture_controller.progress = -manager.get_active_workspace_index ();
364+
private void sync_active_workspace () {
365+
if (workspaces_gesture_controller.recognizing) {
366+
return;
367+
}
368+
369+
var target = -display.get_workspace_manager ().get_active_workspace_index ();
370+
workspaces_gesture_controller.jump (target);
365371
}
366372

367373
private void on_workspace_switched (int from, int to) {

0 commit comments

Comments
 (0)