* con focused. Otherwise, we leave the focus on the current workspace as we
* don’t want to focus invisible workspaces */
if (source_output != dest_output &&
- workspace_is_visible(workspace)) {
+ workspace_is_visible(workspace) &&
+ workspace->name[0] != '_' &&
+ workspace->name[1] != '_') {
DLOG("Moved to a different output, focusing target\n");
} else {
/* Descend focus stack in case focus_next is a workspace which can
/* 4: Fix focus. Normally, when moving a window to a different output, the
* destination output gets focused. In this case, we don’t want that. */
- con_focus(focus_next);
+ if (con_get_workspace(focus_next) == con_get_workspace(focused))
+ con_focus(focus_next);
}
/*
--- /dev/null
+#!perl
+# vim:ts=4:sw=4:expandtab
+# When using a command which moves a window to scratchpad from an invisible
+# (e.g. unfocused) workspace and immediately shows that window again, i3
+# crashed.
+# Bug still in: 4.2-305-g22922a9
+use i3test;
+
+my $ws1 = fresh_workspace;
+my $invisible_window = open_window;
+my $other_focusable_window = open_window;
+
+my $ws2 = fresh_workspace;
+my $id = $invisible_window->id;
+cmd qq|[id="$id"] move scratchpad, scratchpad show|;
+
+does_i3_live;
+
+done_testing;