From 8bddba170b415bb27e71978d5ece4ed820d5c532 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee Date: Wed, 26 Mar 2014 17:59:33 -0400 Subject: [PATCH] Fix tag screen switching The bugs this fix are: * Invalid request using nil as screen * Stop messing indexes in the old screen * Prevent c.screen <-> t.screen mismatch * Prevent no tags being selected in the old screen --- lib/awful/tag.lua.in | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/awful/tag.lua.in b/lib/awful/tag.lua.in index 201e909cc..0ec12c8e6 100644 --- a/lib/awful/tag.lua.in +++ b/lib/awful/tag.lua.in @@ -270,7 +270,22 @@ end -- @param t tag object -- @param s Screen number function tag.setscreen(t, s) + local s = s or capi.mouse.screen + + -- Keeping the old index make very little sense when changing screen + tag.setproperty(t, "index", nil) + + local old_screen = tag.getproperty(t,"screen") + + -- Change the screen tag.setproperty(t, "screen", s) + + -- Make sure the client's screen matches its tags + for k,c in ipairs(t:clients()) do + c.screen = s --Move all clients + c:tags({t}) + end + tag.history.restore(old_screen,1) end --- Get a tag's screen