Re: [Sawfish] Patch for tab.jl

[ Thread Index | Date Index | More Archives ]


On Fri, 24 Aug 2012 03:14:43 +0200
wrote fuchur <flohtransporter@xxxxxxxxx>:

>On Fri, 24 Aug 2012 00:37:49 +0200
>wrote Christopher Roy Bratusek <nano@xxxxxxxxxxxxx>:
>>On Thursday 23 August 2012 21:10:42 fuchur wrote:
>>> Hi,
>>> This patch removes "/usr/share/sawfish/lisp/sawfish/wm/util/marks.jl"
>>> It seems marks.jl is only for tab.jl. But with a pair small changes
>>> in tab.jl we don't need marks.jl
>>> I also add a check if the select window for a tab exists (if not
>>> exists (maybe you have close the window), then tabs will
>>> not work until you restart sawfish, the patch fix that)
>>> And also now the cursor changes if you select a window as tab.
>>Thanks, commited.
>Here is already an update, sorry. We always set the default cursor to
>left_ptr. But i am not sure that always the default cursor is left_ptr.
>To make sure to have always the default cursor set by
>gtk-mouse-theme-selector or other programs we should use also this

Two patches: 
With add-group-as-tabs.patch we have a function and keybinding to
add a complete tabgroup to a window or other tabgroup as tabs. The
keybinding works by the first or second command if you select
a group/window, it makes no difference.

tabgroup-bugfix-01.patch have many bugfix for tabsupport (tabgroup.jl)


GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53  C116 E5BC 70D5 B8D7 B2B0
diff -urNad sawfish.orig/lisp/sawfish/wm/keymaps.jl sawfish/lisp/sawfish/wm/keymaps.jl
--- sawfish.orig/lisp/sawfish/wm/keymaps.jl
+++ sawfish/lisp/sawfish/wm/keymaps.jl
@@ -121,7 +121,8 @@
 				     "Button2-Move" 'resize-window-interactively
 				     "Button1-Off2" 'toggle-window-shaded
 				     "Button1-Move" 'move-window-interactively
-				     "Button2-Off" 'tab-add-to-group)
+				     "Button2-Off" 'tab-add-to-group
+				     "C-Button2-Off" 'tabgroup-add-to-group)
     "Keymap of window title bar. Mouse-bindings only."
     :group bindings
     :type keymap)
@@ -130,6 +131,7 @@
 				      "Button1-Off2" 'toggle-window-shaded
 				      "Button1-Move" 'move-window-interactively
 				      "Button2-Off" 'tab-add-to-group
+				      "C-Button2-Off" 'tabgroup-add-to-group
 				      "Button3-Click" 'tab-release-window
 				      "Button3-Move" 'move-window-interactively)
     "Keymap of window tabbar. Mouse-bindings only."
diff -urNad sawfish.orig/lisp/sawfish/wm/tabs/tab.jl sawfish/lisp/sawfish/wm/tabs/tab.jl
--- sawfish.orig/lisp/sawfish/wm/tabs/tab.jl
+++ sawfish/lisp/sawfish/wm/tabs/tab.jl
@@ -177,14 +177,27 @@
 the second."
     (if marked-window
-          (tab-group-window marked-window win)
+          (mapcar (lambda (w) (tab-group-window w win)) marked-window)
           (default-cursor select-cursor)
           (setq marked-window nil))
       (default-cursor (get-cursor 'clock))
-      (setq marked-window win)))
+      (setq marked-window (cons win))))
   (define-command 'tab-add-to-group tab-add-to-group #:spec "%W")
+  (define (tabgroup-add-to-group win)
+    "Add a tabgroup to a tabgroup. Apply this command on a window 
+from the tabgroup, then on another. The tabgroup will be added to 
+the tabgroup containig the second."
+    (if marked-window
+        (progn
+          (setq marked-window (tab-group-window-index (car marked-window)))
+          (tab-add-to-group win))
+      (default-cursor (get-cursor 'clock))
+      (setq marked-window (tab-group-window-index win))))
+  (define-command 'tabgroup-add-to-group tabgroup-add-to-group #:spec "%W")
   (define (check-win)
     (if (and marked-window
              (not (window-id marked-window)))
--- sawfish.orgi/lisp/sawfish/wm/tabs/tabgroup.jl	2012-08-28 00:31:22.000000000 +0200
+++ sawfish/lisp/sawfish/wm/tabs/tabgroup.jl	2012-08-28 00:20:19.000000000 +0200
@@ -51,7 +51,6 @@
   (define-structure-alias tabgroup sawfish.wm.tabs.tabgroup)
-  (define current-win nil)
   (define all-wins nil)
   (define oldgroup nil)
   (define tab-groups nil)
@@ -279,7 +278,8 @@
           ;; tabgroup to tabgroup
           (when (window-tabbed-p w)
             (setq release-window nil)
-            (tab-delete-window-from-tab-groups w))
+            (tab-delete-window-from-tab-groups w)
+            (setq index2 (tab-window-group-index w)))
           (if (window-get win 'iconified) (uniconify-window win))
           (let ((group-frame-to-workspaces (car (window-workspaces win))))
             (if (window-get win 'shaded) (unshade-window win))
@@ -361,51 +361,39 @@
              (lambda (w) (eq w win))
              (tab-group-window-list (tab-find-window win)))) )
-  (define (tab-group-raise win)
-    (if (window-tabbed-p win)
-        (tab-refresh-group win 'raise)))
-  (define (tab-group-sticky win)
-    (if (window-get win 'sticky)
-        (tab-refresh-group win 'sticky)
-      (tab-refresh-group win 'unsticky)))
   (define (before-move-resize win)
     "Releas win from the tabgroup and iconify the rest from the group."
     (when (not (window-get win 'fixed-position))
-      (when (eq all-wins nil)
-        (let* ((index (tab-window-group-index win))
-               (wins (tab-group-window-list (nth index tab-groups)))
-               (tabs (remove win (tab-group-window-list (nth index tab-groups))))
-               (default-window-animator 'none))
-          (tab-delete-window-from-group win index)
-          (reframe-window win)
-          (setq tab-refresh-lock nil)
-          (mapcar (lambda (w)
-                    (when (window-get w 'never-iconify)
-                      (window-put w 'never-iconify nil)
-                      (window-put w 'never-iconify-opaque t))
-                    (iconify-window w)) tabs)
-          (setq all-wins wins)
-          (setq current-win win))
-        (setq tab-refresh-lock t))))
+      (let* ((default-window-animator 'none)
+             (index (tab-window-group-index win))
+             (wins (tab-group-window-list (nth index tab-groups)))
+             (tabs (remove win (tab-group-window-list (nth index tab-groups)))))
+        (tab-delete-window-from-group win index)
+        (reframe-window win)
+        (setq tab-refresh-lock nil)
+        (mapcar (lambda (w)
+                  (when (window-get w 'never-iconify)
+                    (window-put w 'never-iconify nil)
+                    (window-put w 'never-iconify-opaque t))
+                  (iconify-window w)) tabs)
+        (setq all-wins wins))
+      (setq tab-refresh-lock t)))
   (define (after-move-resize win)
     "Add all tabs to the tabgroup from win. (Releas and iconify by before-move-resize)"
     (setq tab-refresh-lock nil)
-    (let* ((wins all-wins)
-	   (default-window-animator 'none)
+    (let* ((default-window-animator 'none)
+           (wins all-wins)
            (pos (window-position win))
            (dim (window-dimensions win))
            index index-old)
-      (when (and (cdr wins)
-                 (eq win current-win))
+      (when (cdr wins)
         (setq index (tab-window-group-index (car wins)))
         (mapcar (lambda (w)
-                  (when (not (eq index (tab-window-group-index w)))
-                    (setq index-old (tab-window-group-index w))
-                    (tab-put-window-in-group w index)
-                    (tab-delete-window-from-group w index-old))
+                  (setq index-old (tab-window-group-index w))
+                  (tab-put-window-in-group w index)
+                  (tab-delete-window-from-group w index-old)
+                  (setq index (tab-window-group-index w))
                   (move-window-to w (car pos) (cdr pos))
                   (resize-window-to w (car dim) (cdr dim))
                   (uniconify-window w)
@@ -414,8 +402,7 @@
                     (window-put w 'never-iconify t))
                   (window-put w 'tabbed t)) wins)
         (raise-window win)
-        (setq all-wins nil)
-        (setq current-win nil))
+        (setq all-wins nil))
       (setq tab-refresh-lock t)
       (when (window-tabbed-p win)
         (tab-refresh-group win 'move)
@@ -445,6 +432,11 @@
     (when (window-get win 'tab-group)
       (setq in-tab-group-name (remove (assoc last-unmap-id in-tab-group-name) in-tab-group-name))))
+  (define (tab-group-sticky win)
+    (if (window-get win 'sticky)
+        (tab-refresh-group win 'sticky)
+      (tab-refresh-group win 'unsticky)))
   (unless batch-mode
     (add-hook 'after-add-window-hook in-tab-group)
     (add-hook 'unmap-notify-hook unmap-id)
@@ -469,13 +461,13 @@
                          (tab-refresh-group win 'depth)
                          (tab-refresh-group win 'frame))))))
-    (add-hook 'focus-in-hook (lambda (win) (tab-group-raise win)))
     (when (eq move-outline-mode 'opaque)
       (add-hook 'before-move-hook (lambda (win) (if (window-tabbed-p win) (before-move-resize win)))))
     (add-hook 'after-move-hook  (lambda (win) (after-move-resize win)))
     (when (eq resize-outline-mode 'opaque)
       (add-hook 'before-resize-hook (lambda (win) (if (window-tabbed-p win) (before-move-resize win)))))
     (add-hook 'after-resize-hook  (lambda (win) (after-move-resize win)))
+    (add-hook 'focus-in-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'raise))))
     (add-hook 'shade-window-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'shade))))
     (add-hook 'unshade-window-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'unshade))))
     (add-hook 'iconify-window-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'iconify))))
@@ -485,5 +477,4 @@
     (add-hook 'add-to-workspace-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'frame))))
     (add-hook 'destroy-notify-hook tab-delete-window-from-tab-groups))
-  (gaol-add tab-refresh-group tab-group-window-index)
-  )
+  (gaol-add tab-refresh-group tab-group-window-index))

Attachment: signature.asc
Description: PGP signature

Mail converted by MHonArc 2.6.19+