]> git.sur5r.net Git - i3/i3/blobdiff - src/commands.c
handle_configure_request: check for scratchpad once
[i3/i3] / src / commands.c
index c7b57ab3571a94f89b5ebec0b39b2d23a3f9174d..22ec6c3fa9ca54d84ee15ede02cf223351b9abe4 100644 (file)
@@ -1282,7 +1282,7 @@ void cmd_focus_direction(I3_CMD, const char *direction) {
 static void cmd_focus_force_focus(Con *con) {
     /* Disable fullscreen container in workspace with container to be focused. */
     Con *ws = con_get_workspace(con);
-    Con *fullscreen_on_ws = (focused && focused->fullscreen_mode == CF_GLOBAL) ? focused : con_get_fullscreen_con(ws, CF_OUTPUT);
+    Con *fullscreen_on_ws = con_get_fullscreen_covering_ws(ws);
     if (fullscreen_on_ws && fullscreen_on_ws != con && !con_has_parent(con, fullscreen_on_ws)) {
         con_disable_fullscreen(fullscreen_on_ws);
     }
@@ -2019,28 +2019,30 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) {
             LOG("Could not get output named \"%s\"\n", assignment->output);
             continue;
         }
+        if (!output_triggers_assignment(target_output, assignment)) {
+            continue;
+        }
         workspace_move_to_output(workspace, target_output);
 
-        bool can_restore_focus = previously_focused != NULL;
-        /* NB: If previously_focused is a workspace we can't
-         * work directly with it since it might have been cleaned up by
-         * workspace_show() already, depending on the
-         * focus order/number of other workspaces on the output.
-         * Instead, we loop through the available workspaces and only focus
-         * previously_focused if we still find it. */
-        if (previously_focused_content) {
-            Con *workspace = NULL;
-            GREP_FIRST(workspace, previously_focused_content, child == previously_focused);
-            can_restore_focus &= (workspace != NULL);
-        }
+        break;
+    }
 
-        if (can_restore_focus) {
-            /* Restore the previous focus since con_attach messes with the focus. */
-            workspace_show(con_get_workspace(previously_focused));
-            con_activate(previously_focused);
-        }
+    bool can_restore_focus = previously_focused != NULL;
+    /* NB: If previously_focused is a workspace we can't work directly with it
+     * since it might have been cleaned up by workspace_show() already,
+     * depending on the focus order/number of other workspaces on the output.
+     * Instead, we loop through the available workspaces and only focus
+     * previously_focused if we still find it. */
+    if (previously_focused_content) {
+        Con *workspace = NULL;
+        GREP_FIRST(workspace, previously_focused_content, child == previously_focused);
+        can_restore_focus &= (workspace != NULL);
+    }
 
-        break;
+    if (can_restore_focus) {
+        /* Restore the previous focus since con_attach messes with the focus. */
+        workspace_show(con_get_workspace(previously_focused));
+        con_focus(previously_focused);
     }
 
     cmd_output->needs_tree_render = true;