From 9718e38a7af4afc65da26e9a6762074a0fba404a Mon Sep 17 00:00:00 2001
From: Orestis Floros <orestisf1993@gmail.com>
Date: Tue, 28 Aug 2018 10:26:07 +0300
Subject: [PATCH] Don't disable floating in internal workspaces

---
 src/floating.c               |  4 ++++
 testcases/t/185-scratchpad.t | 16 ++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/floating.c b/src/floating.c
index 08041334..3c5afb25 100644
--- a/src/floating.c
+++ b/src/floating.c
@@ -366,6 +366,10 @@ void floating_disable(Con *con, bool automatic) {
     }
 
     Con *ws = con_get_workspace(con);
+    if (con_is_internal(ws)) {
+        LOG("Can't disable floating for container in internal workspace.\n");
+        return;
+    }
     Con *tiling_focused = con_descend_tiling_focused(ws);
 
     if (tiling_focused->type == CT_WORKSPACE) {
diff --git a/testcases/t/185-scratchpad.t b/testcases/t/185-scratchpad.t
index efb5d002..fd3827f7 100644
--- a/testcases/t/185-scratchpad.t
+++ b/testcases/t/185-scratchpad.t
@@ -517,4 +517,20 @@ fresh_workspace;
 $result = cmd 'scratchpad show';
 is($result->[0]->{success}, 1, 'call to scratchpad in another workspace succeeded');
 
+################################################################################
+# 18: Disabling floating for a scratchpad window should not work.
+################################################################################
+
+kill_all_windows;
+
+$ws = fresh_workspace;
+$window = open_window;
+cmd 'move scratchpad';
+cmd '[id=' . $window->id . '] floating disable';
+
+is(scalar @{get_ws_content($ws)}, 0, 'no window in workspace');
+cmd 'scratchpad show';
+is($x->input_focus, $window->id, 'scratchpad window shown');
+
+
 done_testing;