diff --git a/src/Widgets/MultitaskingView/MultitaskingView.vala b/src/Widgets/MultitaskingView/MultitaskingView.vala index b1b71f9b8..2af5cd741 100644 --- a/src/Widgets/MultitaskingView/MultitaskingView.vala +++ b/src/Widgets/MultitaskingView/MultitaskingView.vala @@ -356,7 +356,6 @@ public class Gala.MultitaskingView : ActorTarget, ActivatableComponent { icon_groups.add_group (workspace.icon_group); workspace.window_selected.connect (window_selected); - workspace.selected.connect (activate_workspace); reposition_icon_groups (false); } @@ -384,7 +383,6 @@ public class Gala.MultitaskingView : ActorTarget, ActivatableComponent { } workspace.window_selected.disconnect (window_selected); - workspace.selected.disconnect (activate_workspace); if (icon_groups.contains (workspace.icon_group)) { icon_groups.remove_group (workspace.icon_group); @@ -412,25 +410,6 @@ public class Gala.MultitaskingView : ActorTarget, ActivatableComponent { } } - /** - * Activates the workspace of a WorkspaceClone - * - * @param close_view Whether to close the view as well. Will only be considered - * if the workspace is also the currently active workspace. - * Otherwise it will only be made active, but the view won't be - * closed. - */ - private void activate_workspace (WorkspaceClone clone, bool close_view) { - unowned Meta.WorkspaceManager manager = display.get_workspace_manager (); - close_view = close_view && manager.get_active_workspace () == clone.workspace; - - clone.workspace.activate (display.get_current_time ()); - - if (close_view) { - close (); - } - } - /** * Collect key events, mainly for redirecting them to the WindowCloneContainers to * select the active window. diff --git a/src/Widgets/MultitaskingView/WorkspaceClone.vala b/src/Widgets/MultitaskingView/WorkspaceClone.vala index 909bef403..987b112f2 100644 --- a/src/Widgets/MultitaskingView/WorkspaceClone.vala +++ b/src/Widgets/MultitaskingView/WorkspaceClone.vala @@ -126,14 +126,6 @@ public class Gala.WorkspaceClone : ActorTarget { */ public signal void window_selected (Meta.Window window); - /** - * The background has been selected. Switch to that workspace. - * - * @param close_view If the MultitaskingView should also consider closing itself - * after switching. - */ - public signal void selected (bool close_view); - public WindowManager wm { get; construct; } public Meta.Workspace workspace { get; construct; } public IconGroup icon_group { get; private set; } @@ -170,9 +162,7 @@ public class Gala.WorkspaceClone : ActorTarget { var monitor_geometry = display.get_monitor_geometry (primary_monitor); var background_click_action = new Clutter.ClickAction (); - background_click_action.clicked.connect (() => { - selected (true); - }); + background_click_action.clicked.connect (() => activate (true)); background = new FramedBackground (display); background.add_action (background_click_action); @@ -181,10 +171,10 @@ public class Gala.WorkspaceClone : ActorTarget { height = monitor_geometry.height, }; window_container.window_selected.connect ((w) => { window_selected (w); }); - window_container.requested_close.connect (() => selected (true)); + window_container.requested_close.connect (() => activate (true)); icon_group = new IconGroup (display, workspace, scale_factor); - icon_group.selected.connect (() => selected (true)); + icon_group.selected.connect (() => activate (true)); var icons_drop_action = new DragDropAction (DragDropActionType.DESTINATION, "multitaskingview-window"); icon_group.add_action (icons_drop_action); @@ -200,7 +190,7 @@ public class Gala.WorkspaceClone : ActorTarget { if (hovered && hover_activate_timeout == 0) { hover_activate_timeout = Timeout.add (HOVER_ACTIVATE_DELAY, () => { - selected (false); + activate (false); hover_activate_timeout = 0; return false; }); @@ -333,4 +323,12 @@ public class Gala.WorkspaceClone : ActorTarget { icon_group.backdrop_opacity = 1 - (float) (workspace.index () + progress).abs ().clamp (0, 1); } } + + private void activate (bool close_view) { + if (close_view && workspace.active) { + wm.perform_action (SHOW_MULTITASKING_VIEW); + } else { + workspace.activate (Meta.CURRENT_TIME); + } + } }