Re: ** to GIT source users ** Some incompatibility in "StyleTab"



Hi,

On Mon, 21 Feb 2011 21:03:26 +0100
wrote Christopher Roy Bratusek <nano tuxfamily org>:

>OK. I fixed it like:
>
>349   (define (before-move-resize win)
>350     "Releas win from the tabgroup and iconify the rest from the group."
>351     (let* ((index (tab-window-group-index win))
>352            (wins (tab-group-window-list (nth index tab-groups)))
>353            (tabs (remove win (tab-group-window-list (nth index tab-groups))))
>354            (default-window-animator 'none))
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>So for this action the default-animator is always disabled, and the issues are gone.
>
>Either way opaque should be fixed, to not eat that much CPU-time (not a issue of your code, but the animator itself).

Patch for tabgroup.jl. Changelog:
Add support for maximized/unmaximized, focus-mode, gravity,
sticky-viewpor and never-maximize.
Improve tab-refresh-group.
Small fix for before-move-resize.

All what i want do to in tabgroup.jl is now ready. The select/input or
event window should now work like a singel window without tabs. If
(you) change "events" for the select window it happens so fast like
without tabs, necessary changes for tabs are happens only in the
"background". I have make sure the the select window not reframe/frame
twice and also change window propertys or reframe/frame only once for
tabs if it is necessary.
Sure it is possible to remove the most hooks from tabgroup.jl, and use
"tab-group-window-index" and integrate tabs complete in the sawish code
but it would not be faster, all "settings change" for tabs are in the
"background".


-- 
Regards,
Fuchur

GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53  C116 E5BC 70D5 B8D7 B2B0
--- a/lisp/sawfish/wm/tabs/tabgroup.jl
+++ b/lisp/sawfish/wm/tabs/tabgroup.jl
@@ -166,8 +166,8 @@
 
   (define (tab-refresh-group win prop)
     "Refresh the entire group containing WIN according to PROP.
-PROP can be one of the symbols: raise, frame, reframe, style, move,
-resize, title-position, type, depth, shade, unshade, iconify, uniconify,
+PROP can be one of the symbols: raise, frame, reframe, reframe-all, style, move,
+resize, title-position, type, depth, shade, unshade, iconify, uniconify, maximized,
 sticky, unsticky, fixed-position."
     (when tab-refresh-lock
       (setq tab-refresh-lock nil)
@@ -191,64 +191,70 @@
               (rebuild-frame focus))
              ((eq prop 'reframe)
               (mapcar (lambda (w)
+                        (reframe-window w)) unfocus))
+             ((eq prop 'reframe-all)
+              (mapcar (lambda (w)
                         (reframe-window w)) unfocus)
               (reframe-window focus))
+             ((or (eq prop 'move) (eq prop 'resize))
+              (let ((dim (window-frame-dimensions win))
+                    (pos (window-position win)))
+                (mapcar (lambda (w)
+                          (tab-move-resize-frame-window-to w (car pos) (cdr pos) (car dim) (cdr dim))) unfocus)))
              ((eq prop 'style)
               (let ((group-frame-style (window-get win 'frame-style))
                     (dim (window-frame-dimensions win))
                     (pos (window-position win)))
                 (mapcar (lambda (w)
                           (set-frame-style w group-frame-style)
-                          (tab-move-resize-frame-window-to w (car pos) (cdr pos) (car dim) (cdr dim))) unfocus)
-                (set-frame-style focus group-frame-style)
-                (tab-move-resize-frame-window-to focus (car pos) (cdr pos) (car dim) (cdr dim))))
-             ((or (eq prop 'move) (eq prop 'resize))
-              (let ((dim (window-frame-dimensions win))
-                    (pos (window-position win)))
-                (mapcar (lambda (w)
-                          (tab-move-resize-frame-window-to w (car pos) (cdr pos) (car dim) (cdr dim))) unfocus)
-                (tab-move-resize-frame-window-to focus (car pos) (cdr pos) (car dim) (cdr dim))
-                (rplaca (nthcdr index tab-groups)
-                        (tab-build-group pos dim wins))))
+                          (tab-move-resize-frame-window-to w (car pos) (cdr pos) (car dim) (cdr dim))) unfocus)))
              ((eq prop 'fixed-position)
               (let ((group-frame-fixed-position (window-get win 'fixed-position)))
                 (mapcar (lambda (w)
-                          (window-put w 'fixed-position group-frame-fixed-position)) unfocus)
-                (window-put focus 'fixed-position group-frame-fixed-position)))
+                          (window-put w 'fixed-position group-frame-fixed-position)) unfocus)))
              ((eq prop 'type)
               (let ((group-frame-type (window-get win 'type)))
                 (mapcar (lambda (w)
-                          (window-put w 'type group-frame-type)) unfocus)
-                (window-put focus 'type group-frame-type)))
+                          (window-put w 'type group-frame-type)) unfocus)))
              ((eq prop 'depth)
               (let ((group-frame-depth (window-get win 'depth)))
                 (mapcar (lambda (w)
                           (window-put w 'depth group-frame-depth)) unfocus)
-                 (window-put focus 'depth group-frame-depth)))
+                (raise-window win)
+                (set-input-focus win)))
              ((eq prop 'iconify)
               (mapcar (lambda (w)
-                        (iconify-window w)) unfocus)
-              (iconify-window focus))
+                        (iconify-window w)) unfocus))
              ((eq prop 'uniconify)
               (mapcar (lambda (w)
-                        (uniconify-window w)) unfocus)
-              (uniconify-window focus))
+                        (uniconify-window w)) unfocus))
+             ((eq prop 'maximized)
+              (let ((dim (window-frame-dimensions win))
+                    (pos (window-position win))
+                    (group-frame-maximized-vertically (window-get win 'maximized-vertically))
+                    (group-frame-maximized-horizontally (window-get win 'maximized-horizontally))
+                    (group-frame-maximized-fullscreen (window-get win 'maximized-fullscreen))
+                    (group-frame-unmaximized-type (window-get win 'unmaximized-type))
+                    (group-frame-unmaximized-geometry (window-get win 'unmaximized-geometry)))
+                (mapcar (lambda (w)
+                          (window-put w 'maximized-vertically group-frame-maximized-vertically)
+                          (window-put w 'maximized-horizontally group-frame-maximized-horizontally)
+                          (window-put w 'maximized-fullscreen group-frame-maximized-fullscreen)
+                          (window-put w 'unmaximized-type group-frame-unmaximized-type)
+                          (window-put w 'unmaximized-geometry group-frame-unmaximized-geometry)
+                          (tab-move-resize-frame-window-to w (car pos) (cdr pos) (car dim) (cdr dim))) unfocus)))
              ((eq prop 'sticky)
               (mapcar (lambda (w)
-                        (make-window-sticky w)) unfocus)
-              (make-window-sticky focus))
+                        (make-window-sticky w)) unfocus))
              ((eq prop 'unsticky)
               (mapcar (lambda (w)
-                        (make-window-unsticky w)) unfocus)
-              (make-window-unsticky focus))
+                        (make-window-unsticky w)) unfocus))
              ((eq prop 'shade)
               (mapcar (lambda (w)
-                        (shade-window w)) unfocus) 
-              (shade-window focus))
+                        (shade-window w)) unfocus)) 
              ((eq prop 'unshade)
               (mapcar (lambda (w)
-                        (unshade-window w)) unfocus) 
-              (unshade-window focus))))
+                        (unshade-window w)) unfocus))))
         (setq tab-refresh-lock t))))
 
   ;; Entry points
@@ -264,11 +270,20 @@
              ;; adopt window settings for the new tab
              (group-frame-style (window-get win 'frame-style))
              (group-frame-type (window-get win 'type))
+             (group-frame-focus-mode (window-get win 'focus-mode))
+             (group-frame-gravity (window-get win 'gravity))
              (group-frame-sticky (window-get win 'sticky))
+             (group-frame-sticky-viewport (window-get win 'sticky-viewport))
              (group-frame-never-iconify (window-get win 'never-iconify))
              (group-frame-fixed-position (window-get win 'fixed-position))
              (group-frame-title-position (window-get win 'title-position))
-             (group-frame-depth (window-get win 'depth)))
+             (group-frame-depth (window-get win 'depth))
+             (group-frame-never-maximize (window-get win 'never-maximize))
+             (group-frame-maximized-vertically (window-get win 'maximized-vertically))
+             (group-frame-maximized-horizontally (window-get win 'maximized-horizontally))
+             (group-frame-maximized-fullscreen (window-get win 'maximized-fullscreen))
+             (group-frame-unmaximized-type (window-get win 'unmaximized-type))
+             (group-frame-unmaximized-geometry (window-get win 'unmaximized-geometry)))
         (when (not (eq index index2))
           ;; tabgroup to tabgroup
           (when (window-tabbed-p w)
@@ -278,11 +293,20 @@
           (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)
+          (window-put w 'gravity group-frame-gravity)
           (window-put w 'title-position group-frame-title-position)
           (window-put w 'sticky group-frame-sticky)
+          (window-put w 'sticky-viewport group-frame-sticky-viewport)
           (window-put w 'never-iconify group-frame-never-iconify)
           (window-put w 'depth group-frame-depth)
           (window-put w 'fixed-position group-frame-fixed-position)
+          (window-put w 'never-maximize group-frame-never-maximize)
+          (window-put w 'maximized-vertically group-frame-maximized-vertically)
+          (window-put w 'maximized-horizontally group-frame-maximized-horizontally)
+          (window-put w 'maximized-fullscreen group-frame-maximized-fullscreen)
+          (window-put w 'unmaximized-type group-frame-unmaximized-type)
+          (window-put w 'unmaximized-geometry group-frame-unmaximized-geometry)
           ;; reframe w here, tab-refresh-group expectet
           ;; the same frame for w and win
           (reframe-window w)
@@ -348,21 +372,23 @@
 
   (define (before-move-resize win)
     "Releas win from the tabgroup and iconify the rest from the group."
-    (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)
-      (rebuild-frame 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))
+    (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)
+          (rebuild-frame 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))))
 
   (define (after-move-resize win)
     "Add all tabs to the tabgroup from win. (Releas and iconify by before-move-resize)"
@@ -408,7 +434,7 @@
                          (tab-refresh-group win 'frame))
                         ((eq 'frame-style args)
                          (tab-refresh-group win 'style)
-                         (tab-refresh-group win 'reframe)
+                         (tab-refresh-group win 'reframe-all)
                          (tab-refresh-group win 'move))
                         ((eq 'type args)
                          (tab-refresh-group win 'type)
@@ -428,6 +454,8 @@
     (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))))
     (add-hook 'uniconify-window-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'uniconify))))
+    (add-hook 'window-maximized-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'maximized))))
+    (add-hook 'window-unmaximized-hook (lambda (win) (if (window-tabbed-p win) (tab-refresh-group win 'maximized))))
     (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))
 

Attachment: signature.asc
Description: PGP signature



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