Hello community,

here is the log from the commit of package i3-gaps for openSUSE:Factory checked 
in at 2020-06-07 21:37:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/i3-gaps (Old)
 and      /work/SRC/openSUSE:Factory/.i3-gaps.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "i3-gaps"

Sun Jun  7 21:37:08 2020 rev:10 rq:812067 version:4.18.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/i3-gaps/i3-gaps.changes  2020-03-09 
14:17:56.586686932 +0100
+++ /work/SRC/openSUSE:Factory/.i3-gaps.new.3606/i3-gaps.changes        
2020-06-07 21:37:47.993351492 +0200
@@ -1,0 +2,15 @@
+Fri Jun  5 01:17:18 UTC 2020 - Avindra Goolcharan <avin...@opensuse.org>
+
+- Update to version 4.18.1:
+  * Bugfixes
+  - Move parent nodes in scratchpad correctly
+  - i3bar: Call cont_child() more liberally
+  - Fix load_layout crash when floating node doesn't have
+    CT_FLOATING_CON parent
+  - Fix SEGFAULT when i3bar receives invalid input
+  - Revert "floating_reposition: avoid extra tree_render"
+  - Call tree_render if floating move changes workspace
+  - Update EWMH properties on workspace move
+  - cmd_focus_sibling: Fix crash on workspace level
+
+-------------------------------------------------------------------

Old:
----
  i3-gaps-4.18.tar.bz2

New:
----
  i3-gaps-4.18.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ i3-gaps.spec ++++++
--- /var/tmp/diff_new_pack.ocEFSL/_old  2020-06-07 21:37:49.461356146 +0200
+++ /var/tmp/diff_new_pack.ocEFSL/_new  2020-06-07 21:37:49.465356159 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           i3-gaps
-Version:        4.18
+Version:        4.18.1
 Release:        0
 Summary:        Tiling window manager
 License:        BSD-3-Clause

++++++ i3-gaps-4.18.tar.bz2 -> i3-gaps-4.18.1.tar.bz2 ++++++
++++ 4885 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/I3_VERSION new/i3-4.18.1/I3_VERSION
--- old/i3-4.18/I3_VERSION      2020-02-18 08:30:51.000000000 +0100
+++ new/i3-4.18.1/I3_VERSION    2020-04-23 14:13:40.000000000 +0200
@@ -1 +1 @@
-4.18 (2020-02-18)
+4.18.1 (2020-04-23)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/Makefile.am new/i3-4.18.1/Makefile.am
--- old/i3-4.18/Makefile.am     2020-02-18 08:37:42.000000000 +0100
+++ new/i3-4.18.1/Makefile.am   2020-04-23 14:11:47.000000000 +0200
@@ -118,7 +118,7 @@
        I3_VERSION \
        LICENSE \
        PACKAGE-MAINTAINER \
-       RELEASE-NOTES-4.18 \
+       RELEASE-NOTES-4.18.1 \
        generate-command-parser.pl \
        parser-specs/commands.spec \
        parser-specs/config.spec \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/RELEASE-NOTES-4.18 new/i3-4.18.1/RELEASE-NOTES-4.18
--- old/i3-4.18/RELEASE-NOTES-4.18      2020-02-18 08:35:21.000000000 +0100
+++ new/i3-4.18.1/RELEASE-NOTES-4.18    1970-01-01 01:00:00.000000000 +0100
@@ -1,71 +0,0 @@
-
- ┌────────────────────────────┐
- │ Release notes for i3 v4.18 │
- └────────────────────────────┘
-
-This is i3 v4.18. This version is considered stable. All users of i3 are
-strongly encouraged to upgrade.
-
- ┌────────────────────────────┐
- │ Changes in i3 v4.18        │
- └────────────────────────────┘
-
-  • docs/ipc: document fullscreen_mode in GET_TREE reply
-  • docs/ipc: document marks field in GET_TREE reply
-  • docs/ipc: document window_type in GET_TREE reply
-  • docs/ipc: improve documentation for window_properties
-  • docs/userguide: clarify commands/config directive wording
-  • layout saving: remanage window after property updates (e.g. titles)
-  • get_first_output: prefer primary output (e.g. when moving disabled outputs)
-  • ipc: add window_type to nodes
-  • ipc: add container id to nodes
-  • allow dragging active titles for all container types (e.g. floating+tabbed)
-  • allow dragging inactive titles after a 10px threshold
-  • make tray icon order deterministic (sorted by class/instance)
-  • implement focus next|prev
-  • implement focus next|prev sibling
-  • implement focus_wrapping workspace
-  • exit with exit code 0 on --help
-  • exec command: respect command criteria
-
- ┌────────────────────────────┐
- │ Bugfixes                   │
- └────────────────────────────┘
-
-  • build: fix lcov support
-  • build: use AC_REPLACE_FUNCS, drop bundled memmem
-  • build: fix building with -fno-common (for gcc 10)
-  • build: configure: deal with git worktree checkouts, where .git is a file
-  • docs/userguide: fix link to pango markup
-  • docs/userguide: add missing manipulating_layout anchor
-  • docs/userguide: fix IPC socket location
-  • i3-nagbar: make debug log visible
-  • i3-nagbar: fix small memory leaks
-  • i3bar: fix small memory leaks
-  • move workspace to output: don’t create duplicate numbered workspace
-  • correctly select output when pointer query fails
-  • fix moving windows to scratchpad when using marks
-  • fix startup workspace selection when workspace command uses options
-  • do not try to center floating window on itself (fixes xterm placement)
-  • fix “move window to <mark>” when target is a workspace
-  • correctly activate windows behind a fullscreen window
-  • fix back-and-forth after renaming workspaces
-  • keep focus when moving container to marked workspace
-  • do not show scratchpad windows upon move to position command
-  • reparent windows to their current position when unmanaging
-    (fixes dock clients unexpectedly moving to different output)
-  • fix crash when moving containers
-  • scratchpad_move: un-fullscreen correct container
-  • avoid crash when nc->window is NULL
-
- ┌────────────────────────────┐
- │ Thanks!                    │
- └────────────────────────────┘
-
-Thanks for testing, bugfixes, discussions and everything I forgot go out to:
-
-  acheronfail, Albert Safin, Antoine, Benjamin Dopplinger, Brian Ashworth,
-  Damien Cassou, Daniele Varrazzo, David Shen, Erwin J. van Eijk, Ingo Bürk,
-  Iskustvo, izzel, Konst Mayer, Orestis Floros, Yury Ignatev
-
--- Michael Stapelberg, 2020-02-17
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/RELEASE-NOTES-4.18.1 new/i3-4.18.1/RELEASE-NOTES-4.18.1
--- old/i3-4.18/RELEASE-NOTES-4.18.1    1970-01-01 01:00:00.000000000 +0100
+++ new/i3-4.18.1/RELEASE-NOTES-4.18.1  2020-04-23 14:11:47.000000000 +0200
@@ -0,0 +1,32 @@
+
+ ┌──────────────────────────────┐
+ │ Release notes for i3 v4.18.1 │
+ └──────────────────────────────┘
+
+This is i3 v4.18.1. This version is considered stable. All users of i3 are
+strongly encouraged to upgrade.
+
+This is a bugfix release for v4.18.
+
+ ┌────────────────────────────┐
+ │ Bugfixes                   │
+ └────────────────────────────┘
+
+  • Move parent nodes in scratchpad correctly
+  • i3bar: Call cont_child() more liberally
+  • Fix load_layout crash when floating node doesn't have CT_FLOATING_CON 
parent
+  • Fix SEGFAULT when i3bar receives invalid input
+  • Revert "floating_reposition: avoid extra tree_render"
+  • Call tree_render if floating move changes workspace
+  • Update EWMH properties on workspace move
+  • cmd_focus_sibling: Fix crash on workspace level
+
+ ┌────────────────────────────┐
+ │ Thanks!                    │
+ └────────────────────────────┘
+
+Thanks for testing, bugfixes, discussions and everything I forgot go out to:
+
+  Heman Gandhi, Orestis Floros
+
+-- Michael Stapelberg, 2020-04-22
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/ar-lib new/i3-4.18.1/ar-lib
--- old/i3-4.18/ar-lib  2020-02-18 08:38:06.000000000 +0100
+++ new/i3-4.18.1/ar-lib        2020-04-23 14:14:25.000000000 +0200
@@ -2,9 +2,9 @@
 # Wrapper for Microsoft lib.exe
 
 me=ar-lib
-scriptversion=2012-03-01.08; # UTC
+scriptversion=2019-07-04.01; # UTC
 
-# Copyright (C) 2010-2018 Free Software Foundation, Inc.
+# Copyright (C) 2010-2020 Free Software Foundation, Inc.
 # Written by Peter Rosin <p...@lysator.liu.se>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@
          MINGW*)
            file_conv=mingw
            ;;
-         CYGWIN*)
+         CYGWIN* | MSYS*)
            file_conv=cygwin
            ;;
          *)
@@ -65,7 +65,7 @@
        mingw)
          file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
          ;;
-       cygwin)
+       cygwin | msys)
          file=`cygpath -m "$file" || echo "$file"`
          ;;
        wine)
@@ -224,10 +224,11 @@
       esac
     done
   else
-    $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
-    do
-      $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
-    done
+    $AR -NOLOGO -LIST "$archive" | tr -d '\r' | sed -e 's/\\/\\\\/g' \
+      | while read member
+        do
+          $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+        done
   fi
 
 elif test -n "$quick$replace"; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/compile new/i3-4.18.1/compile
--- old/i3-4.18/compile 2020-02-18 08:38:06.000000000 +0100
+++ new/i3-4.18.1/compile       2020-04-23 14:14:25.000000000 +0200
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 # Written by Tom Tromey <tro...@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@
          MINGW*)
            file_conv=mingw
            ;;
-         CYGWIN*)
+         CYGWIN* | MSYS*)
            file_conv=cygwin
            ;;
          *)
@@ -67,7 +67,7 @@
        mingw/*)
          file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
          ;;
-       cygwin/*)
+       cygwin/* | msys/*)
          file=`cygpath -m "$file" || echo "$file"`
          ;;
        wine/*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/configure.ac new/i3-4.18.1/configure.ac
--- old/i3-4.18/configure.ac    2020-02-18 08:30:30.000000000 +0100
+++ new/i3-4.18.1/configure.ac  2020-04-23 14:11:47.000000000 +0200
@@ -2,7 +2,7 @@
 # Run autoreconf -fi to generate a configure script from this file.
 
 AC_PREREQ([2.69])
-AC_INIT([i3], [4.18], [https://github.com/i3/i3/issues])
+AC_INIT([i3], [4.18.1], [https://github.com/i3/i3/issues])
 # For AX_EXTEND_SRCDIR
 AX_ENABLE_BUILDDIR
 AM_INIT_AUTOMAKE([foreign subdir-objects -Wall no-dist-gzip dist-bzip2])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/debugging.html new/i3-4.18.1/docs/debugging.html
--- old/i3-4.18/docs/debugging.html     2020-02-18 08:38:33.000000000 +0100
+++ new/i3-4.18.1/docs/debugging.html   2020-04-23 14:15:13.000000000 +0200
@@ -957,7 +957,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2018-11-04 15:27:11 CET
+ 2019-08-28 08:56:31 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/hacking-howto.html new/i3-4.18.1/docs/hacking-howto.html
--- old/i3-4.18/docs/hacking-howto.html 2020-02-18 08:38:36.000000000 +0100
+++ new/i3-4.18.1/docs/hacking-howto.html       2020-04-23 14:15:15.000000000 
+0200
@@ -2381,7 +2381,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2017-09-24 20:40:44 CEST
+ 2017-10-25 08:56:58 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/i3bar-protocol.html new/i3-4.18.1/docs/i3bar-protocol.html
--- old/i3-4.18/docs/i3bar-protocol.html        2020-02-18 08:38:34.000000000 
+0100
+++ new/i3-4.18.1/docs/i3bar-protocol.html      2020-04-23 14:15:13.000000000 
+0200
@@ -1209,7 +1209,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2020-02-18 08:27:01 CET
+ 2020-04-22 08:53:23 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/ipc.html new/i3-4.18.1/docs/ipc.html
--- old/i3-4.18/docs/ipc.html   2020-02-18 08:38:36.000000000 +0100
+++ new/i3-4.18.1/docs/ipc.html 2020-04-23 14:15:15.000000000 +0200
@@ -2677,7 +2677,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2020-02-18 08:27:01 CET
+ 2020-04-22 08:53:23 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/layout-saving.html new/i3-4.18.1/docs/layout-saving.html
--- old/i3-4.18/docs/layout-saving.html 2020-02-18 08:38:34.000000000 +0100
+++ new/i3-4.18.1/docs/layout-saving.html       2020-04-23 14:15:13.000000000 
+0200
@@ -1016,7 +1016,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2020-02-18 08:27:01 CET
+ 2020-04-22 08:53:23 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/multi-monitor.html new/i3-4.18.1/docs/multi-monitor.html
--- old/i3-4.18/docs/multi-monitor.html 2020-02-18 08:38:32.000000000 +0100
+++ new/i3-4.18.1/docs/multi-monitor.html       2020-04-23 14:15:12.000000000 
+0200
@@ -816,7 +816,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2016-01-09 06:46:50 CET
+ 2017-03-28 14:05:54 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/testsuite.html new/i3-4.18.1/docs/testsuite.html
--- old/i3-4.18/docs/testsuite.html     2020-02-18 08:38:34.000000000 +0100
+++ new/i3-4.18.1/docs/testsuite.html   2020-04-23 14:15:14.000000000 +0200
@@ -1434,7 +1434,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2018-03-10 18:49:00 CET
+ 2018-03-13 08:53:27 CET
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/userguide.html new/i3-4.18.1/docs/userguide.html
--- old/i3-4.18/docs/userguide.html     2020-02-18 08:38:39.000000000 +0100
+++ new/i3-4.18.1/docs/userguide.html   2020-04-23 14:15:17.000000000 +0200
@@ -3960,7 +3960,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2020-02-18 08:27:01 CET
+ 2020-04-23 14:10:46 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/docs/wsbar.html new/i3-4.18.1/docs/wsbar.html
--- old/i3-4.18/docs/wsbar.html 2020-02-18 08:38:33.000000000 +0100
+++ new/i3-4.18.1/docs/wsbar.html       2020-04-23 14:15:13.000000000 +0200
@@ -844,7 +844,7 @@
 <div id="footer">
 <div id="footer-text">
 Last updated
- 2017-09-24 20:40:44 CEST
+ 2017-10-25 08:56:58 CEST
 </div>
 </div>
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/i3bar/src/child.c new/i3-4.18.1/i3bar/src/child.c
--- old/i3-4.18/i3bar/src/child.c       2019-08-04 09:40:48.000000000 +0200
+++ new/i3-4.18.1/i3bar/src/child.c     2020-04-23 14:11:47.000000000 +0200
@@ -194,6 +194,11 @@
 
 static int stdin_boolean(void *context, int val) {
     parser_ctx *ctx = context;
+
+    if (!ctx->last_map_key) {
+        return 0;
+    }
+
     if (strcasecmp(ctx->last_map_key, "urgent") == 0) {
         ctx->block.urgent = val;
         return 1;
@@ -208,6 +213,11 @@
 
 static int stdin_string(void *context, const unsigned char *val, size_t len) {
     parser_ctx *ctx = context;
+
+    if (!ctx->last_map_key) {
+        return 0;
+    }
+
     if (strcasecmp(ctx->last_map_key, "full_text") == 0) {
         ctx->block.full_text = i3string_from_markup_with_length((const char 
*)val, len);
         return 1;
@@ -260,6 +270,11 @@
 
 static int stdin_integer(void *context, long long val) {
     parser_ctx *ctx = context;
+
+    if (!ctx->last_map_key) {
+        return 0;
+    }
+
     if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
         ctx->block.min_width = (uint32_t)val;
         return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/i3bar/src/xcb.c new/i3-4.18.1/i3bar/src/xcb.c
--- old/i3-4.18/i3bar/src/xcb.c 2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/i3bar/src/xcb.c       2020-04-23 14:11:47.000000000 +0200
@@ -677,9 +677,6 @@
             continue;
         }
         if (output->bar.id == event->window) {
-            if (output->visible == visible) {
-                return;
-            }
             output->visible = visible;
         }
         num_visible += output->visible;
@@ -687,10 +684,7 @@
 
     if (num_visible == 0) {
         stop_child();
-    } else if (num_visible == visible) {
-        /* Wake the child only when transitioning from 0 to 1 visible bar.
-         * We cannot transition from 0 to 2 or more visible bars at once since
-         * visibility events are delivered to each window separately */
+    } else {
         cont_child();
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-config-wizard.1 new/i3-4.18.1/man/i3-config-wizard.1
--- old/i3-4.18/man/i3-config-wizard.1  2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-config-wizard.1        2020-04-23 14:15:15.000000000 
+0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-config-wizard
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-CONFIG\-WIZARD" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-CONFIG\-WIZARD" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-dmenu-desktop.1 new/i3-4.18.1/man/i3-dmenu-desktop.1
--- old/i3-4.18/man/i3-dmenu-desktop.1  2020-02-18 08:38:36.000000000 +0100
+++ new/i3-4.18.1/man/i3-dmenu-desktop.1        2020-04-23 14:15:12.000000000 
+0200
@@ -71,7 +71,7 @@
 .\" ========================================================================
 .\"
 .IX Title "I3-DMENU-DESKTOP 1"
-.TH I3-DMENU-DESKTOP 1 "2017-09-24" "perl v5.30.1" "User Contributed Perl 
Documentation"
+.TH I3-DMENU-DESKTOP 1 "2020-04-23" "perl v5.30.2" "User Contributed Perl 
Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-dump-log.1 new/i3-4.18.1/man/i3-dump-log.1
--- old/i3-4.18/man/i3-dump-log.1       2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-dump-log.1     2020-04-23 14:15:16.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-dump-log
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-DUMP\-LOG" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-DUMP\-LOG" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-input.1 new/i3-4.18.1/man/i3-input.1
--- old/i3-4.18/man/i3-input.1  2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-input.1        2020-04-23 14:15:15.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-input
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-INPUT" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-INPUT" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-migrate-config-to-v4.1 
new/i3-4.18.1/man/i3-migrate-config-to-v4.1
--- old/i3-4.18/man/i3-migrate-config-to-v4.1   2020-02-18 08:38:38.000000000 
+0100
+++ new/i3-4.18.1/man/i3-migrate-config-to-v4.1 2020-04-23 14:15:15.000000000 
+0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-migrate-config-to-v4
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-MIGRATE\-CONFIG\" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-MIGRATE\-CONFIG\" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-msg.1 new/i3-4.18.1/man/i3-msg.1
--- old/i3-4.18/man/i3-msg.1    2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-msg.1  2020-04-23 14:15:14.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-msg
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-MSG" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-MSG" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-nagbar.1 new/i3-4.18.1/man/i3-nagbar.1
--- old/i3-4.18/man/i3-nagbar.1 2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-nagbar.1       2020-04-23 14:15:15.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-nagbar
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-NAGBAR" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-NAGBAR" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-save-tree.1 new/i3-4.18.1/man/i3-save-tree.1
--- old/i3-4.18/man/i3-save-tree.1      2020-02-18 08:38:36.000000000 +0100
+++ new/i3-4.18.1/man/i3-save-tree.1    2020-04-23 14:15:12.000000000 +0200
@@ -71,7 +71,7 @@
 .\" ========================================================================
 .\"
 .IX Title "I3-SAVE-TREE 1"
-.TH I3-SAVE-TREE 1 "2018-11-04" "perl v5.30.1" "User Contributed Perl 
Documentation"
+.TH I3-SAVE-TREE 1 "2019-08-28" "perl v5.30.2" "User Contributed Perl 
Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-sensible-editor.1 new/i3-4.18.1/man/i3-sensible-editor.1
--- old/i3-4.18/man/i3-sensible-editor.1        2020-02-18 08:38:38.000000000 
+0100
+++ new/i3-4.18.1/man/i3-sensible-editor.1      2020-04-23 14:15:15.000000000 
+0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-sensible-editor
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-SENSIBLE\-EDITOR" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-SENSIBLE\-EDITOR" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-sensible-pager.1 new/i3-4.18.1/man/i3-sensible-pager.1
--- old/i3-4.18/man/i3-sensible-pager.1 2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3-sensible-pager.1       2020-04-23 14:15:15.000000000 
+0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-sensible-pager
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-SENSIBLE\-PAGER" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-SENSIBLE\-PAGER" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3-sensible-terminal.1 new/i3-4.18.1/man/i3-sensible-terminal.1
--- old/i3-4.18/man/i3-sensible-terminal.1      2020-02-18 08:38:38.000000000 
+0100
+++ new/i3-4.18.1/man/i3-sensible-terminal.1    2020-04-23 14:15:16.000000000 
+0200
@@ -2,12 +2,12 @@
 .\"     Title: i3-sensible-terminal
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3\-SENSIBLE\-TERMIN" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3\-SENSIBLE\-TERMIN" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3.1 new/i3-4.18.1/man/i3.1
--- old/i3-4.18/man/i3.1        2020-02-18 08:38:38.000000000 +0100
+++ new/i3-4.18.1/man/i3.1      2020-04-23 14:15:14.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/man/i3bar.1 new/i3-4.18.1/man/i3bar.1
--- old/i3-4.18/man/i3bar.1     2020-02-18 08:38:37.000000000 +0100
+++ new/i3-4.18.1/man/i3bar.1   2020-04-23 14:15:14.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: i3bar
 .\"    Author: [see the "AUTHORS" section]
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/18/2020
+.\"      Date: 04/23/2020
 .\"    Manual: i3 Manual
-.\"    Source: i3 4.18
+.\"    Source: i3 4.18.1
 .\"  Language: English
 .\"
-.TH "I3BAR" "1" "02/18/2020" "i3 4\&.18" "i3 Manual"
+.TH "I3BAR" "1" "04/23/2020" "i3 4\&.18\&.1" "i3 Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/missing new/i3-4.18.1/missing
--- old/i3-4.18/missing 2020-02-18 08:38:06.000000000 +0100
+++ new/i3-4.18.1/missing       2020-04-23 14:14:25.000000000 +0200
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/src/commands.c new/i3-4.18.1/src/commands.c
--- old/i3-4.18/src/commands.c  2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/src/commands.c        2020-04-23 14:11:47.000000000 +0200
@@ -1299,7 +1299,16 @@
         }
         Con *next = get_tree_next_sibling(current->con, direction);
         if (next) {
-            con_activate(next);
+            if (next->type == CT_WORKSPACE) {
+                /* On the workspace level, we need to make sure that the
+                 * workspace change happens properly. However, workspace_show
+                 * descends focus so we also have to put focus on the workspace
+                 * itself to maintain consistency. See #3997. */
+                workspace_show(next);
+                con_focus(next);
+            } else {
+                con_activate(next);
+            }
         }
     }
 
@@ -1517,7 +1526,7 @@
                     break;
             }
 
-            floating_reposition(current->con->parent, newrect);
+            cmd_output->needs_tree_render = 
floating_reposition(current->con->parent, newrect);
         } else {
             tree_move(current->con, direction);
             cmd_output->needs_tree_render = true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/src/floating.c new/i3-4.18.1/src/floating.c
--- old/i3-4.18/src/floating.c  2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/src/floating.c        2020-04-23 14:11:47.000000000 +0200
@@ -745,16 +745,13 @@
 
     con->rect = newrect;
 
-    bool reassigned = floating_maybe_reassign_ws(con);
+    floating_maybe_reassign_ws(con);
 
     /* If this is a scratchpad window, don't auto center it from now on. */
     if (con->scratchpad_state == SCRATCHPAD_FRESH)
         con->scratchpad_state = SCRATCHPAD_CHANGED;
 
-    /* Workspace change will already result in a tree_render. */
-    if (!reassigned) {
-        tree_render();
-    }
+    tree_render();
     return true;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/src/load_layout.c new/i3-4.18.1/src/load_layout.c
--- old/i3-4.18/src/load_layout.c       2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/src/load_layout.c     2020-04-23 14:11:47.000000000 +0200
@@ -171,6 +171,19 @@
         con_attach(json_node, json_node->parent, true);
         LOG("Creating window\n");
         x_con_init(json_node);
+
+        /* Fix erroneous JSON input regarding floating containers to avoid
+         * crashing, see #3901. */
+        const int old_floating_mode = json_node->floating;
+        if (old_floating_mode >= FLOATING_AUTO_ON && json_node->parent->type 
!= CT_FLOATING_CON) {
+            LOG("Fixing floating node without CT_FLOATING_CON parent\n");
+
+            /* Force floating_enable to work */
+            json_node->floating = FLOATING_AUTO_OFF;
+            floating_enable(json_node, false);
+            json_node->floating = old_floating_mode;
+        }
+
         json_node = json_node->parent;
         incomplete--;
         DLOG("incomplete = %d\n", incomplete);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/src/scratchpad.c new/i3-4.18.1/src/scratchpad.c
--- old/i3-4.18/src/scratchpad.c        2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/src/scratchpad.c      2020-04-23 14:11:47.000000000 +0200
@@ -138,7 +138,7 @@
             floating->scratchpad_state != SCRATCHPAD_NONE) {
             DLOG("Found a visible scratchpad window on another workspace,\n");
             DLOG("moving it to this workspace: con = %p\n", walk_con);
-            con_move_to_workspace(walk_con, focused_ws, true, false, false);
+            con_move_to_workspace(floating, focused_ws, true, false, false);
             con_activate(con_descend_focused(walk_con));
             return true;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/src/workspace.c new/i3-4.18.1/src/workspace.c
--- old/i3-4.18/src/workspace.c 2020-02-18 08:27:01.000000000 +0100
+++ new/i3-4.18.1/src/workspace.c       2020-04-23 14:11:47.000000000 +0200
@@ -1069,6 +1069,8 @@
         workspace_show(ws);
     }
 
+    ewmh_update_desktop_properties();
+
     if (!previously_visible_ws) {
         return;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/test-driver new/i3-4.18.1/test-driver
--- old/i3-4.18/test-driver     2020-02-18 08:38:06.000000000 +0100
+++ new/i3-4.18.1/test-driver   2020-04-23 14:14:25.000000000 +0200
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/testcases/t/185-scratchpad.t 
new/i3-4.18.1/testcases/t/185-scratchpad.t
--- old/i3-4.18/testcases/t/185-scratchpad.t    2020-02-18 08:27:01.000000000 
+0100
+++ new/i3-4.18.1/testcases/t/185-scratchpad.t  2020-04-23 14:11:47.000000000 
+0200
@@ -548,5 +548,31 @@
 cmd '[id=' . $first->id . '] move position center';
 is ($x->input_focus, $second->id, 'centering scratchpad window does not show 
it');
 
+###################################################################################
+# Verify that a scratchpad container with child containers that was open in
+# another workspace is moved to the current workspace (with all its children)
+# after a scratchpad show.
+################################################################################
+
+kill_all_windows;
+open_window;
+open_window;
+# This is to dodge the edge case were the whole workspace is moved
+# window-by-window into the scratchpad.
+cmd 'layout tabbed';
+cmd 'focus parent';
+cmd 'move to scratchpad';
+$ws = fresh_workspace;
+cmd 'scratchpad show';
+# Case 1: a parent node in the scratchpad does not lose children
+# Note on the layout: there should be a floating tabbed container, which is
+# represented as follows:
+#    [workspace object] -> [floating_nodes] -> [tabbed node container] -> [the 
2 children we expect]
+is(scalar @{get_ws($ws)->{floating_nodes}->[0]->{nodes}->[0]->{nodes}}, 2, 
'both windows moved from scratchpad to this workspace');
+
+# Case 2: a parent node in the scratchpad from another workspace does not lose 
children
+$ws = fresh_workspace;
+cmd 'scratchpad show';
+is(scalar @{get_ws($ws)->{floating_nodes}->[0]->{nodes}->[0]->{nodes}}, 2, 
'both windows moved from scratchpad focused on other workspace to this 
workspace');
 
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/testcases/t/215-layout-restore-crash.t 
new/i3-4.18.1/testcases/t/215-layout-restore-crash.t
--- old/i3-4.18/testcases/t/215-layout-restore-crash.t  2017-09-24 
20:40:44.000000000 +0200
+++ new/i3-4.18.1/testcases/t/215-layout-restore-crash.t        2020-04-23 
14:11:47.000000000 +0200
@@ -212,7 +212,7 @@
 EOT
     $fh->flush;
     $reply = cmd "append_layout $filename";
-    ok(!$reply->[0]->{success}, 'IPC reply indicated success');
+    ok(!$reply->[0]->{success}, 'IPC reply did not indicate success');
 
     does_i3_live;
 
@@ -276,5 +276,49 @@
 
 close($fh);
 
+################################################################################
+# Issue with floating key being set, without proper parent
+# See #3901
+################################################################################
+subtest 'issue 3901' => sub {
+    kill_all_windows;
+    $ws = fresh_workspace;
+    is(scalar @{get_ws($ws)->{floating_nodes}}, 0, 'No floating nodes yet');
+
+    ($fh, $filename) = tempfile(UNLINK => 1);
+    print $fh <<'EOT';
+// vim:ts=4:sw=4:et
+{
+    "border": "pixel",
+    "current_border_width": 1,
+    "floating": "auto_on", // crashes: user_on, auto_on, no crash: user_off, 
auto_off
+    "geometry": {
+       "height": 400,
+       "width": 300,
+       "x": 820,
+       "y": 350
+    },
+    "name": "Click me to crash",
+    "percent": 0.5, // still crashes if this field is absent
+    "swallows": [
+       {
+       "class": "^this doesn't matter as long as it doesn't match a new 
window$"
+       }
+    ],
+    "type": "con"
+}
+
+EOT
+    $fh->flush;
+    $reply = cmd "append_layout $filename";
+    ok($reply->[0]->{success}, 'IPC reply indicated success');
+
+    cmd '[floating] focus';
+    is(scalar @{get_ws($ws)->{floating_nodes}}, 1, 'one floating node on this 
ws');
+
+    does_i3_live;
+
+    close($fh);
+};
 
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/testcases/t/307-focus-next-prev.t 
new/i3-4.18.1/testcases/t/307-focus-next-prev.t
--- old/i3-4.18/testcases/t/307-focus-next-prev.t       2020-02-18 
08:27:01.000000000 +0100
+++ new/i3-4.18.1/testcases/t/307-focus-next-prev.t     2020-04-23 
14:11:47.000000000 +0200
@@ -69,4 +69,16 @@
         cmd 'focus parent, focus next sibling';
     });
 
+# See #3997
+cmd 'workspace 2';
+open_window;
+cmd 'workspace 1';
+open_window;
+cmd 'focus parent, focus parent, focus next sibling, focus prev sibling';
+does_i3_live;
+is(focused_ws, '1', 'Back and forth between workspaces');
+
+cmd 'focus parent, focus parent, focus next sibling';
+is(focused_ws, '2', "Workspace 2 focused with 'focus next sibling'");
+
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/i3-4.18/testcases/t/521-ewmh-desktop-viewport.t 
new/i3-4.18.1/testcases/t/521-ewmh-desktop-viewport.t
--- old/i3-4.18/testcases/t/521-ewmh-desktop-viewport.t 2017-09-24 
20:40:44.000000000 +0200
+++ new/i3-4.18.1/testcases/t/521-ewmh-desktop-viewport.t       2020-04-23 
14:11:47.000000000 +0200
@@ -50,7 +50,10 @@
     return unpack ("L$len", $reply->{value});
 }
 
-# initialize the workspaces
+################################################################################
+# Initialize the workspaces
+################################################################################
+
 cmd 'workspace 1';
 cmd 'workspace 0';
 
@@ -60,6 +63,10 @@
 is_deeply(\@desktop_viewport, \@expected_viewport,
     '_NET_DESKTOP_VIEWPORT should be an array of x/y coordinate pairs for the 
upper left corner of the respective outputs of the workspaces');
 
+################################################################################
+# Create workspace
+################################################################################
+
 cmd 'workspace 0';
 open_window;
 cmd 'workspace 3';
@@ -70,6 +77,10 @@
 is_deeply(\@desktop_viewport, \@expected_viewport,
     'it should be updated when a new workspace appears');
 
+################################################################################
+# Rename workspace
+################################################################################
+
 cmd 'rename workspace 3 to 2';
 
 @expected_viewport = (0, 0, 0, 0, 1024, 0);
@@ -78,6 +89,10 @@
 is_deeply(\@desktop_viewport, \@expected_viewport,
     'it should stay up to date when a workspace is renamed');
 
+################################################################################
+# Empty workspace
+################################################################################
+
 cmd 'workspace 0';
 
 @expected_viewport = (0, 0, 1024, 0);
@@ -86,4 +101,20 @@
 is_deeply(\@desktop_viewport, \@expected_viewport,
     'it should be updated when a workspace is emptied');
 
+################################################################################
+# Move workspace
+# See #4001
+################################################################################
+
+# Keep workspace 1 open to have 3 workspaces in total
+cmd 'workspace 1';
+open_window;
+cmd 'workspace 0, move workspace to output right';
+@expected_viewport = (0, 0, 1024, 0, 1024, 0);
+@desktop_viewport = get_desktop_viewport;
+is_deeply(\@desktop_viewport, \@expected_viewport,
+    'it should be updated when a workspace is moved');
+
+################################################################################
+
 done_testing;


Reply via email to