Re: Themes for 3.0



Hi,

Here i have patches for tab support and tabthemes.

01.themes.patch
Changes:
Remove reframe/rebuild functions from theme.jl
Reframe/rebuild windows by tab-themes now only 
call from tabgroup.jl

02.tabs.patch
Changes:
Reframe/rebuild windows by tab-themes now call
from tabgroup.jl.
Don't try to add a single/same window in a tabgroup. 
Remember titel-position if window uniconify.
Reset set-tab-adjustments from tab-themes.jl if required.
Bugfix.

03.frames.patch
Changes:
Add functions adjustment-title to call hook title-position.
Before reframe a window call adjustment-title and reset
set-tab-adjustments from tab-themes.jl file.

04_DarkTab.patch
Changes:
Remove clicked title color settings, now the same as the highlight
color.
Remove reframe/rebuild functions, now set by tabgroup.jl

-- 
Regards,
Fuchur

GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53  C116 E5BC 70D5 B8D7 B2B0
diff -urNad sawfish.orgi/themes/Elberg-tabbed/theme.jl sawfish/themes/Elberg-tabbed/theme.jl
--- sawfish.orgi/themes/Elberg-tabbed/theme.jl	2010-11-11 15:20:08.000000000 +0100
+++ sawfish/themes/Elberg-tabbed/theme.jl	2010-11-11 15:22:28.000000000 +0100
@@ -492,24 +492,6 @@
     (when (eq (window-get w 'current-frame-style) 'Elberg-tabbed)
       (create-frames))))
 
-(define (reframe-one w)
-    (when (eq (window-get w 'current-frame-style) 'Elberg-tabbed)
-      (create-frames)
-      (reframe-window w)))
-
-(define (reframe-group w)
-  (when (eq (window-get w 'current-frame-style) 'Elberg-tabbed)
-    (map-window-group
-     (lambda (x)
-       (reframe-one x)) w)))
-
-;; create only frames when focus a window don't draw
-;;
-(add-hook 'focus-in-hook create-frames-only)
-(add-hook 'add-window-hook create-frames-only)
-
-(call-after-property-changed '(WM_HINTS WM_NAME _NET_WM_NAME _NET_WM_STATE _NET_WM_DESKTOP) reframe-one)
-
-;; tabgroup.jl call
-;;
-(call-after-state-changed '(title-position) reframe-group)
+;; Create only frames, don't rebuild-frame/reframe-window.
+;; Tabthemes will reframe/rebuild windows call from tabgroup.jl.
+(call-after-state-changed '(title-position) create-frames-only)
diff -urNad sawfish.orgi/themes/get-S-tabbed/theme.jl sawfish/themes/get-S-tabbed/theme.jl
--- sawfish.orgi/themes/get-S-tabbed/theme.jl	2010-11-11 15:20:08.000000000 +0100
+++ sawfish/themes/get-S-tabbed/theme.jl	2010-11-11 15:22:41.000000000 +0100
@@ -330,24 +330,7 @@
     (when (eq (window-get w 'current-frame-style) 'get-S-tabbed)
       (create-frames))))
 
-(define (reframe-one w)
-    (when (eq (window-get w 'current-frame-style) 'get-S-tabbed)
-      (create-frames)
-      (reframe-window w)))
-
-(define (reframe-group w)
-  (when (eq (window-get w 'current-frame-style) 'get-S-tabbed)
-    (map-window-group
-     (lambda (x)
-       (reframe-one x)) w)))
-
-;; create only frames when focus a window don't draw
-;;
-(add-hook 'focus-in-hook create-frames-only)
-(add-hook 'add-window-hook create-frames-only)
-
-(call-after-property-changed '(WM_HINTS WM_NAME _NET_WM_NAME _NET_WM_STATE _NET_WM_DESKTOP) reframe-one)
-
-;; tabgroup.jl call
-;;
-(call-after-state-changed '(title-position) reframe-group)
+;; Create only frames, don't rebuild-frame/reframe-window.
+;; Tabthemes will reframe/rebuild windows call from tabgroup.jl.
+;; 
+(call-after-state-changed '(title-position) create-frames-only)
diff -urNad sawfish.orgi/lisp/sawfish/wm/tabs/tabgroup.jl sawfish/lisp/sawfish/wm/tabs/tabgroup.jl
--- sawfish.orgi/lisp/sawfish/wm/tabs/tabgroup.jl	2010-11-11 15:20:08.000000000 +0100
+++ sawfish/lisp/sawfish/wm/tabs/tabgroup.jl	2010-11-11 15:49:38.000000000 +0100
@@ -158,7 +158,7 @@
                 (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)) 
-                          (rebuild-frame w)) wins)))
+                          (reframe-window w)) wins)))
              ((or (eq prop 'move) (eq prop 'resize))
               (let ((dim (window-frame-dimensions win))
                     (pos (window-position win)))
@@ -219,23 +219,24 @@
            ;; adopt group for the new tab
            ;; use sawfish's "default" groups
            (group-id (window-actual-group-id win)))
-      (window-put w 'type group-frame-type)
-      (window-put w 'sticky group-frame-sticky)
-      (window-put w 'depth group-frame-depth)
-      (window-put w 'fixed-position group-frame-fixed-position)
-      (window-put w 'title-position group-frame-title-position)
-      (window-put w 'frame-style group-frame-style)
-      ;; ugly hack, don't know why it's needed, but new groups are
-      ;; listed with pos (0,0):
-      (tab-refresh-group w 'reframe)
-      (tab-refresh-group win 'move)
-      (add-window-to-group w group-id)
-      (tab-put-window-in-group w index)
-      ;;
-      ;; call hook to redraw tablength from theme file
-      (call-window-hook 'window-state-change-hook w (list '(title-position)))
-      (tab-delete-window-from-group w index2)
-      (tab-refresh-group win 'move)))
+      (when (not (eq index index2))
+        (window-put w 'frame-style group-frame-style)
+        (window-put w 'type group-frame-type)
+        (window-put w 'title-position group-frame-title-position)
+        ;; reframe w with new frame-style , type, title-position.
+        ;; tab-move-resize-frame-window-to, tab-refresh-group expectet
+        ;; the same frame for w and win
+        (reframe-window w)
+        (window-put w 'sticky group-frame-sticky)
+        (window-put w 'depth group-frame-depth)
+        (window-put w 'fixed-position group-frame-fixed-position)
+        ;; ugly hack, don't know why it's needed, but new groups are
+        ;; listed with pos (0,0):
+        (tab-refresh-group win 'move)
+        (add-window-to-group w group-id)
+        (tab-put-window-in-group w index)
+        (tab-delete-window-from-group w index2)
+        (tab-refresh-group win 'frame))))
 
   (define (tab-release-window w)
     "Release active window from its group"
@@ -278,20 +279,17 @@
              (lambda (w) (eq w win))
              (tab-group-window-list (tab-find-window win)))) )
 
-  (define (raise-tab-group w)
-    (raise-group w))
-
   (define (tab-group-sticky w)
     (if (window-get w 'sticky)
         (make-group-sticky w)
       (make-group-unsticky w)))
 
   (unless batch-mode
-    ;(add-hook 'focus-in-hook raise-tab-group)
     (add-hook 'window-state-change-hook
               (lambda (win args)
-                (if (= '(sticky) args)
-                    (tab-group-sticky win))))
+                (when (= '(sticky) args)
+                  (tab-group-sticky win)
+                  (tab-refresh-group win 'frame))))
     (add-hook 'window-state-change-hook
               (lambda (win args)
                 (if (= '(fixed-position) args)
@@ -299,6 +297,7 @@
     (add-hook 'window-state-change-hook
               (lambda (win args)
                 (if (= '(frame-style) args)
+                    (adjustment-title win)
                     (tab-refresh-group win 'reframe-style))))
     (add-hook 'window-state-change-hook
               (lambda (win args)
@@ -308,6 +307,7 @@
               (lambda (win args)
                 (if (= '(stacking) args)
                     (tab-refresh-group win 'depth))))
+    (add-hook 'before-move-hook (lambda (win) (adjustment-title win)))
     (add-hook 'after-move-hook (lambda (win) (tab-refresh-group win 'move)))
     (add-hook 'after-resize-hook (lambda (win) (tab-refresh-group win 'resize)))
     ;; only update tabs by move if opaque move mode (opaque = slow)
@@ -317,7 +317,14 @@
       )
     (add-hook 'window-resized-hook (lambda (win) (tab-refresh-group win 'resize)))
     (add-hook 'shade-window-hook (lambda (win) (tab-refresh-group win 'shade)))
-    (add-hook 'unshade-window-hook (lambda (win) (tab-refresh-group win 'unshade)))
+    (add-hook 'unshade-window-hook 
+              (lambda (win) 
+                (adjustment-title win)
+                (tab-refresh-group win 'unshade)))
     (add-hook 'iconify-window-hook (lambda (win) (tab-refresh-group win 'iconify)))
-    (add-hook 'uniconify-window-hook (lambda (win) (tab-refresh-group win 'uniconify)))
+    (add-hook 'uniconify-window-hook 
+              (lambda (win) 
+                (adjustment-title win)
+                (tab-refresh-group win 'uniconify)))
+    (add-hook 'add-to-workspace-hook (lambda (win) (tab-refresh-group win 'frame)))
     (add-hook 'destroy-notify-hook tab-delete-window-from-tab-groups)))
diff -urNad sawfish.orgi/lisp/sawfish/wm/frames.jl sawfish/lisp/sawfish/wm/frames.jl
--- sawfish.orgi/lisp/sawfish/wm/frames.jl	2010-11-11 15:20:08.000000000 +0100
+++ sawfish/lisp/sawfish/wm/frames.jl	2010-11-11 15:26:25.000000000 +0100
@@ -36,6 +36,7 @@
 	     apply-frame-style
 	     apply-frame-style-and-save
 	     window-type
+         adjustment-title
 	     set-window-type
 	     push-window-type
 	     pop-window-type
@@ -326,9 +327,13 @@
 		  (reload-frame-style style))))
 	    frame-style-files)))
 
+  (define (adjustment-title w)
+    (call-window-hook 'window-state-change-hook w (list '(title-position))))
+
 ;;; applying frame styles to windows
 
   (define (reframe-window w)
+    (adjustment-title w)
     (if (window-get w 'ignored)
 	(progn
 	  (window-put w 'current-frame-style nil)
diff -urNad DarkTab.orgi/theme.jl DarkTab/theme.jl
--- DarkTab.orgi/theme.jl	2010-11-11 16:08:00.000000000 +0100
+++ DarkTab/theme.jl	2010-11-11 16:08:37.000000000 +0100
@@ -81,11 +81,6 @@
   :group (appearance DarkTab:group DarkTab:settings-group)
   :type color)
 
-(defcustom darktab:clicked-color "#F2F2F2"
-  "Clicked title text color."
-  :group (appearance DarkTab:group DarkTab:settings-group)
-  :type color)
-
 (defcustom darktab:inactive-color "#CCCCCC"
   "Inactive title text color."
   :group (appearance DarkTab:group DarkTab:settings-group)
@@ -96,11 +91,6 @@
   :group (appearance DarkTab:group DarkTab:settings-group)
   :type color)
 
-(defcustom darktab:inactive-clicked "#E6E6E6"
-  "Inactive Clicked title text color."
-  :group (appearance DarkTab:group DarkTab:settings-group)
-  :type color)
-
 (defcustom darktab:top-left-buttons `((menu ,t) (shade ,t) (sticky ,nil))
   "Top Titlebar Left Buttons (from left to right)"
   :group (appearance DarkTab:group DarkTab:buttons-group DarkTab:top-buttons-group DarkTab:top-left-buttons-group)
@@ -411,6 +401,7 @@
         (lambda (x)
           (window-put x 'title-position 'left)) (current-event-window))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y))))
   (bind-keys
@@ -445,6 +436,7 @@
           (lambda (x)
             (window-put x 'title-position 'top)) (current-event-window)))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y))))
   (bind-keys
@@ -482,6 +474,7 @@
         (lambda (x)
           (window-put x 'title-position 'right)) (current-event-window))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y)))))
 
@@ -534,6 +527,7 @@
           (lambda (x)
             (window-put x 'title-position 'bottom)) (current-event-window)))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y))))
   (bind-keys
@@ -569,6 +563,7 @@
         (lambda (x)
           (window-put x 'title-position 'top)) (current-event-window))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y))))
   (bind-keys
@@ -620,6 +615,7 @@
           (lambda (x)
             (window-put x 'title-position 'bottom)) (current-event-window)))
        (call-window-hook 'window-state-change-hook (current-event-window) (list '(title-position)))
+       (map-window-group (lambda (x) (reframe-window x)) (current-event-window))
        (move-window-to (current-event-window) pos-x pos-y)
        (resize-window-to (current-event-window) dim-x dim-y)))))
 
@@ -1677,10 +1673,10 @@
   (lambda ()
     `((focused . ,darktab:focused-color)
       (highlighted . ,darktab:highlighted-color)
-      (clicked . ,darktab:clicked-color)
+      (clicked . ,darktab:highlighted-color)
       (inactive . ,darktab:inactive-color)
       (inactive-highlighted . ,darktab:inactive-highlighted-color)
-      (inactive-clicked . ,darktab:inactive-clicked))))
+      (inactive-clicked . ,darktab:inactive-highlighted-color))))
 
 (define top-frame-sticky-image-set
   (lambda (w)
@@ -3092,40 +3088,17 @@
   (lambda ()
     (reframe-windows theme-name)))
 
+;; also reset icon cache
+;;
 (define reframe-all-clean
   (lambda ()
     (setq icon-table (make-weak-table eq-hash eq))
     (reframe-all)))
 
-(define (reframe-one w)
-  (when (eq (window-get w 'current-frame-style) theme-name)
-    (current-title-w w)
-    (reframe-window w)))
-
-(define (reframe-group w)
-  (when (eq (window-get w 'current-frame-style) theme-name)
-    (map-window-group
-     (lambda (x)
-       (reframe-one x)) w)))
-
-;; create only frames when focus a window don't draw
-;;
-(add-hook 'focus-in-hook create-frames-only)
-(add-hook 'add-window-hook create-frames-only)
-
-(call-after-property-changed '(WM_HINTS WM_NAME _NET_WM_NAME _NET_WM_STATE _NET_WM_DESKTOP) reframe-one)
-
-;; theme-title icon switch
-;;
-;;(call-after-state-changed '(title-position) reframe-one)
-(call-after-state-changed '(title-position) reframe-group)
-
-;; when the window is sent to another workspace
-;; redraw it to update the buttons and titlebar if necessary
+;; Create only frames, don't rebuild-frame/reframe-window.
+;; Tabthemes will reframe/rebuild windows call from tabgroup.jl. 
 ;;
-(add-hook 'remove-from-workspace-hook
-          (lambda (w)
-            (reframe-window w)))
+(call-after-state-changed '(title-position) create-frames-only)
 
 (custom-set-property 'darktab:focused-color ':after-set reframe-all)
 (custom-set-property 'darktab:highlighted-color ':after-set reframe-all)

Attachment: signature.asc
Description: PGP signature



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