[sawfish] cycle-among-groups bugfix.



commit 205c60770bc1a86f02ce9df654a2c9e7a837aa58
Author: Teika kazura <teika lavabit com>
Date:   Sat Nov 13 14:45:40 2010 +0900

    cycle-among-groups bugfix.
    
    Previously, when window-cycle is limited to the same workspace or viewport,
    then not all window groups were not cycled.

 lisp/sawfish/wm/commands/x-cycle.jl |   21 ++++++++++++++++++---
 man/news.texi                       |    6 ++++++
 2 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/lisp/sawfish/wm/commands/x-cycle.jl b/lisp/sawfish/wm/commands/x-cycle.jl
index a50d4d4..5400fd6 100644
--- a/lisp/sawfish/wm/commands/x-cycle.jl
+++ b/lisp/sawfish/wm/commands/x-cycle.jl
@@ -352,9 +352,24 @@ Any extra arguments are passed to each call to define-command."
     'cycle-among-groups 'cycle-among-groups-backwards
     (lambda ()
       "Only cycle the top members of each group."
-      (delete-if-not window-in-cycle-p
-                     (mapcar (lambda (gid) (car (windows-by-group gid t)))
-                             (window-group-ids)))))
+      (let loop
+	  ((wl (window-order
+		(if cycle-all-workspaces
+		    nil
+		  current-workspace)
+		cycle-include-iconified cycle-all-viewports))
+	   grps
+	   retval)
+	(when (and (window-in-cycle-p (car wl))
+		   (not (memq (window-group-id (car wl)) grps)))
+	  (when (window-group-id (car wl))
+	    ;; Some windows don't have group.
+	    (setq grps (cons (window-group-id (car wl)) grps)))
+	  (setq retval (cons (car wl) retval)))
+	(if (cdr wl)
+	    (loop (cdr wl) grps retval)
+	  (nreverse retval)
+	  ))))
 
   (define-cycle-command-pair
     'cycle-prefix 'cycle-prefix-backwards
diff --git a/man/news.texi b/man/news.texi
index c4dd1a8..77091bd 100644
--- a/man/news.texi
+++ b/man/news.texi
@@ -62,8 +62,14 @@ invoked, if run without any desktop environment. Fixed it.
 It is ensured that SawfishPager builds correctly, by improving @file{sawfish.pc} file.
 
 @item KDE *.desktop files location [Teika Kazura]
+
 Previously, user's change of the variable
 @code{kde-desktop-directories} was ignored, but this is fixed.
+
+ item Window cycle among groups [Teika Kazura]
+
+Some windows were skipped in window cycles among groups. This is fixed.
+
 @end itemize
 @item Misc Changes
 @itemize @minus



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]