[Sawfish] Re: Add new window as tab patch |
[ Thread Index | Date Index | More lists.tuxfamily.org/sawfish Archives ]
Hi, On Tue, 27 Mar 2012 18:51:16 +0200 wrote fuchur <flohtransporter@xxxxxxxxx>: >>Hi, >> >>On Mon, 26 Mar 2012 04:01:26 +0200 >>wrote fuchur <flohtransporter@xxxxxxxxx>: >> >>>Hi, >>> >>>Here is a patch to add a new window as tab if have one (the first >>>created if more as one) of the windows the same 'tab-group property". >>>'tab-group property can set by window-rules and also save in >>>window-history. You can choose between 12 tab-groups. If you know how >>>to grow Tab groups or "automatically" update (maybe by window-names) in >>>window-rules please send a patch. >>> >> >>Here is the same patch as above but with some bugfix. >>Need more tester/ing. >> Some Windows not call the unmap-notify-hook e.g. gimp and tabgroup will not work. This patch for local-master-branch fix that. -- Regards, Fuchur GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53 C116 E5BC 70D5 B8D7 B2B0
--- sawfish/lisp/sawfish/wm/tabs/tabgroup.jl.orgi 2012-03-28 23:45:00.000000000 +0200 +++ sawfish/lisp/sawfish/wm/tabs/tabgroup.jl 2012-03-28 23:42:01.000000000 +0200 @@ -276,9 +276,11 @@ (setq release-window t) (tab-delete-window-from-tab-groups w) (setq release-window nil)) + (if (window-get win 'iconified) (uniconify-window win)) + (if (window-get win 'shaded) (unshade-window win)) (setq tab-refresh-lock nil) + (if (window-get w 'iconified) (uniconify-window w)) (if (window-get w 'shaded) (unshade-window w)) - (if (window-get win 'shaded) (unshade-window win)) (window-put w 'frame-style group-frame-style) (window-put w 'type group-frame-type) (window-put w 'focus-mode group-frame-focus-mode) @@ -420,9 +422,15 @@ (when (window-get win 'tab-group) (setq in-tab-group-name (append in-tab-group-name (cons (cons (window-id win) (window-get win 'tab-group))))) (let ((open-win-tabgroup (get-window-by-id (car (rassoc (window-get win 'tab-group) in-tab-group-name))))) - (if (and open-win-tabgroup - (not (eq win open-win-tabgroup))) - (tab-group-window win open-win-tabgroup))))) + ;; unmap-notify-hook gets not always a window-id for all + ;; windows e.g. gimp (it will close more as one window and + ;; also not all call the unmap-notify-hook and/or we get the window-id). + ;; This next "if" will clean the list and remove the "ghosts". + (if (not (eq open-win-tabgroup nil)) + (if (not (eq win open-win-tabgroup)) + (tab-group-window win open-win-tabgroup)) + (setq in-tab-group-name (remove (rassoc (window-get win 'tab-group) in-tab-group-name) in-tab-group-name)) + (in-tab-group win))))) (define (remove-from-tab-group win) "Remove window from in-tab-group-name alist if it have a 'tab-group property"
Attachment:
signature.asc
Description: PGP signature
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |