Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions src/Widgets/MultitaskingView/MultitaskingView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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.
Expand Down
25 changes: 11 additions & 14 deletions src/Widgets/MultitaskingView/WorkspaceClone.vala
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down Expand Up @@ -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);

Expand All @@ -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);
Expand All @@ -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;
});
Expand Down Expand Up @@ -333,4 +323,11 @@ public class Gala.WorkspaceClone : ActorTarget {
icon_group.backdrop_opacity = 1 - (float) (workspace.index () + progress).abs ().clamp (0, 1);
}
}

private void activate (bool close_view) {
workspace.activate (Meta.CURRENT_TIME);
if (close_view && workspace.active) {
wm.perform_action (SHOW_MULTITASKING_VIEW);
}
}
}