diff options
-rw-r--r-- | group.c | 38 |
1 files changed, 18 insertions, 20 deletions
@@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: group.c,v 1.130 2019/02/28 13:11:53 okan Exp $ + * $OpenBSD: group.c,v 1.131 2019/02/28 23:20:52 okan Exp $ */ #include <sys/types.h> @@ -160,15 +160,14 @@ group_movetogroup(struct client_ctx *cc, int idx) return; TAILQ_FOREACH(gc, &sc->groupq, entry) { - if (gc->num == idx) - break; + if (gc->num == idx) { + if (cc->gc == gc) + return; + if (gc->num != 0 && group_holds_only_hidden(gc)) + client_hide(cc); + group_assign(gc, cc); + } } - - if (cc->gc == gc) - return; - if (gc->num != 0 && group_holds_only_hidden(gc)) - client_hide(cc); - group_assign(gc, cc); } void @@ -221,17 +220,16 @@ group_hidetoggle(struct screen_ctx *sc, int idx) return; TAILQ_FOREACH(gc, &sc->groupq, entry) { - if (gc->num == idx) - break; - } - - if (group_holds_only_hidden(gc)) - group_show(gc); - else { - group_hide(gc); - /* make clients stick to empty group */ - if (TAILQ_EMPTY(&gc->clientq)) - group_setactive(gc); + if (gc->num == idx) { + if (group_holds_only_hidden(gc)) + group_show(gc); + else { + group_hide(gc); + /* make clients stick to empty group */ + if (TAILQ_EMPTY(&gc->clientq)) + group_setactive(gc); + } + } } } |