Hi, On Thu, 4 Nov 2010 21:13:37 +0100 wrote Christopher Roy Bratusek <zanghar freenet de>: >Well after doing some testing I removed a small portion: > >diff --git a/lisp/sawfish/wm/tabs/tabgroup.jl b/lisp/sawfish/wm/tabs/tabgroup.jl >index bdfc95a..cd55e5a 100644 >--- a/lisp/sawfish/wm/tabs/tabgroup.jl >+++ b/lisp/sawfish/wm/tabs/tabgroup.jl >@@ -287,7 +287,7 @@ > (make-group-unsticky w))) > > (unless batch-mode >- (add-hook 'focus-in-hook raise-tab-group) >+ ;(add-hook 'focus-in-hook raise-tab-group) > (add-hook 'window-state-change-hook > (lambda (win args) > (if (= '(sticky) args) > >The reason why I did is pretty simple: it always raises a newly focused window. >That is a bad behavior, as it overrides the settings I made (enter-exit, but not raising >a window, unless I hit it's border (using raise-tabs-on-hover)). > >Chris I have work on tab support. Changes in tabgroup.jl: Add "tabbed" to window properties if a window is in a tabbgroup and remove it if release from group. Add window-tabbed-p t if window in tabbgroup. Don't use sawfish default groups for tabbed windows. Only raise a tabbed-window if it is in tabgroup and get focus, and put the select ( last event window / focus ) at the heights position in tabgroup. Fix focus (give focus to last event window). Add support for title-position call from theme.jl Fix overlapping bug (http://article.gmane.org/gmane.comp.window-managers.sawfish/7896). Changes in theme.jl: Improve icon switch. With default and my custom settings it works, no overlapping, windows/tabs got correct focus and so on. Please test it also with yours settings and report if is something wrong. Thanks. -- Regards, Fuchur GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53 C116 E5BC 70D5 B8D7 B2B0
diff -urNad sawfish-git-9999.orgi/lisp/sawfish/wm/tabs/tabgroup.jl sawfish-git-9999/lisp/sawfish/wm/tabs/tabgroup.jl --- sawfish-git-9999.orgi/lisp/sawfish/wm/tabs/tabgroup.jl 2011-02-09 17:42:24.000000000 +0100 +++ sawfish-git-9999/lisp/sawfish/wm/tabs/tabgroup.jl 2011-02-09 17:43:34.000000000 +0100 @@ -20,7 +20,9 @@ (define-structure sawfish.wm.tabs.tabgroup - (export adjustment-title + (export window-tabbed-p + adjustment-title + tab-refresh-group tab-release-window tab-raise-left-window tab-raise-right-window @@ -51,6 +53,9 @@ (define tab-refresh-lock t) (define tab-move-lock t) + (define (window-tabbed-p w) + (window-get w 'tabbed)) + (define-record-type :tab-group (tab-build-group p d wl) tab-group? @@ -61,7 +66,6 @@ (define (adjustment-title w) (call-window-hook 'window-state-change-hook w (list '(title-position)))) - (define (tab-move-resize-frame-window-to win x y w h) "Move and resize according to *frame* dimensions." (let* ((dim1 (window-dimensions win)) @@ -83,24 +87,24 @@ (let loop ((gr tab-groups)) (cond ((null gr) - (tab-make-new-group win) - ) + (tab-make-new-group win) + ) ((member win (tab-group-window-list (car gr))) - (car gr)) + (car gr)) (t - (loop (cdr gr)))))) + (loop (cdr gr)))))) (define (tab-window-group-index win) "Return the index of the group containing win." (let loop ((index 0)) (cond ((eq index (length tab-groups)) - (tab-make-new-group win) - index) + (tab-make-new-group win) + index) ((member win (tab-group-window-list (nth index tab-groups))) - index) + index) (t - (loop (+ index 1)))))) + (loop (+ index 1)))))) (define (tab-rank elem list) (if (eq elem (car list)) @@ -115,10 +119,12 @@ (setq tab-groups (delete old tab-groups)) (rplaca (nthcdr index tab-groups) (tab-build-group (tab-group-position old) (tab-group-dimensions old) l)) - ;; releas from sawfish "default" group adopt by tab-group-window - (add-window-to-new-group win) + (window-put win 'tabbed nil) + (tab-refresh-group win 'raise) (tab-refresh-group win 'frame) (window-put win 'fixed-position nil) + (if (not (cdr l)) + (window-put (car l) 'tabbed nil)) (tab-refresh-group (car l) 'frame)))) (define (tab-delete-window-from-tab-groups w) @@ -135,7 +141,6 @@ (tab-group-dimensions group) (append (tab-group-window-list group) (list win)))) (tab-move-resize-frame-window-to win (car pos) (cdr pos) (car dim) (cdr dim)) - (raise-group win) (rebuild-frame win))) (define (tab-refresh-group win prop) @@ -147,9 +152,16 @@ (setq tab-refresh-lock nil) (unwind-protect (let* ((index (tab-window-group-index win)) - (wins (tab-group-window-list (nth index tab-groups)))) + (wins (tab-group-window-list (nth index tab-groups))) + (focus (tab-group-offset win 0))) (adjustment-title win) (cond + ((eq prop 'raise) + (raise-windows focus wins)) + ((eq prop 'title-position) + (let ((group-title-position (window-get win 'title-position))) + (mapcar (lambda (w) + (window-put w 'title-position group-title-position)) wins))) ((eq prop 'frame) (mapcar (lambda (w) (rebuild-frame w)) wins)) @@ -212,13 +224,10 @@ (unshade-window w) (rebuild-frame w)) wins)))) (setq tab-refresh-lock t)))) - + ;; Entry points (define (tab-group-window w win) "Add window W to tabgroup containing WIN." - ;; unshade windows if add/remove - (unshade-window w) - (unshade-window win) (let* ((index (tab-window-group-index win)) (index2 (tab-window-group-index w)) ;; adopt window settings for the new tab @@ -227,11 +236,16 @@ (group-frame-sticky (window-get win 'sticky)) (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)) - ;; adopt group for the new tab - ;; use sawfish's "default" groups - (group-id (window-actual-group-id win))) + (group-frame-depth (window-get win 'depth))) (when (not (eq index index2)) + ;; unshade windows if add/remove + (if (window-get w 'shaded) + (unshade-window w)) + (if (window-get win 'shaded) + (unshade-window win)) + (if (not (window-tabbed-p win)) + (window-put win 'tabbed t)) + (window-put w 'tabbed t) (window-put w 'frame-style group-frame-style) (window-put w 'type group-frame-type) (window-put w 'title-position group-frame-title-position) @@ -245,10 +259,10 @@ ;; 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)))) + (tab-refresh-group win 'frame) + (tab-refresh-group w 'raise)))) (define (tab-release-window w) "Release the window from its group." @@ -291,6 +305,10 @@ (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) @@ -299,18 +317,19 @@ (unless batch-mode (add-hook 'window-state-change-hook (lambda (win args) - (setq args (car args)) - (cond ((eq 'sticky args) - (tab-group-sticky win)) - ((eq 'fixed-position args) - (tab-refresh-group win 'fixed-position)) - ((eq 'frame-style args) - (tab-refresh-group win 'reframe-style)) - ((eq 'type args) - (tab-refresh-group win 'type)) - ((eq 'stacking args) - (tab-refresh-group win 'depth))))) - + (setq args (car args)) + (cond ((eq 'sticky args) + (tab-group-sticky win)) + ((eq 'fixed-position args) + (tab-refresh-group win 'fixed-position)) + ((eq 'frame-style args) + (tab-refresh-group win 'reframe-style)) + ((eq 'type args) + (tab-refresh-group win 'type)) + ((eq 'stacking args) + (tab-refresh-group win 'depth))))) + + (add-hook 'focus-in-hook (lambda (win) (tab-group-raise 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)
diff -urNad sawfish-git-9999.orgi/themes/StyleTab/theme.jl sawfish-git-9999/themes/StyleTab/theme.jl --- sawfish-git-9999.orgi/themes/StyleTab/theme.jl 2011-02-09 17:42:25.000000000 +0100 +++ sawfish-git-9999/themes/StyleTab/theme.jl 2011-02-09 17:48:45.000000000 +0100 @@ -51,7 +51,7 @@ (defgroup StyleTab:right-bottom-buttons-group "Right Titlebar Bottom Buttons" :group (appearance StyleTab:group StyleTab:buttons-group StyleTab:right-buttons-group)) -(defcustom styletab:style 'Dark "Frame and button style. (after you set this, you'll need to restart Sawfish)" +(defcustom styletab:style 'Dark "Frame and button style. (after you set this, you'll need to restart Sawfish)" :group (appearance StyleTab:group StyleTab:settings-group) :options (Reduce Dark DarkColor Silver SilverColor Smoothly) :type symbol) @@ -472,150 +472,152 @@ tabbar-horizontal-left-edge-keymap "Button1-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim (window-dimensions (current-event-window))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim (window-dimensions w)) + (setq fdim (window-frame-dimensions w)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ (car dim) (cdr dim) styletab:title-dimension)) 3)) (if (eq current-title 'right) (setq framehigh 0) - (if (or (eq (window-get (current-event-window) + (if (or (eq (window-get w 'type) 'default) - (eq (window-get (current-event-window) + (eq (window-get w 'type) 'transient)) (setq framehigh (+ (- styletab:title-dimension (* styletab:borders-dimension 2)) framew)) (setq framehigh (+ styletab:title-dimension framew)))) - (setq dim-x (- (car (window-dimensions (current-event-window))) + (setq dim-x (- (car (window-dimensions w)) framehigh)) - (setq dim-y (+ (cdr (window-dimensions (current-event-window))) + (setq dim-y (+ (cdr (window-dimensions w)) framehigh)) (if (<= pos-x 0) (setq pos-x 0)) - (map-window-group - (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)))) + (window-put w 'title-position 'left) + (tab-refresh-group w 'title-position) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y)))) (bind-keys tabbar-horizontal-left-edge-keymap "Button2-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq fdim (window-frame-dimensions w)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ dim-x dim-y styletab:title-dimension)) 3)) - - (setq type (window-get (current-event-window) 'type)) - + (setq type (window-get w 'type)) (if (>= (+ pos-y dim-y styletab:title-dimension framew) (screen-height)) (setq pos-y (- (screen-height) dim-y styletab:title-dimension framew))) (if (<= pos-y 0) (setq pos-y 0)) (if (eq current-title 'top) - (map-window-group - (lambda (x) - (window-put x 'title-position 'bottom)) (current-event-window)) - (map-window-group - (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)))) + (window-put w 'title-position 'bottom) + (window-put w 'title-position 'top)) + (if (eq current-title 'top) + (tab-refresh-group w 'title-position) + (tab-refresh-group w 'title-position)) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y)))) (bind-keys tabbar-horizontal-left-edge-keymap "Button3-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim (window-dimensions (current-event-window))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim (window-dimensions w)) + (setq fdim (window-frame-dimensions w)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ (car dim) (cdr dim) styletab:title-dimension)) 3)) (if (eq current-title 'left) (setq framehigh 0) - (if (or (eq (window-get (current-event-window) + (if (or (eq (window-get w 'type) 'default) - (eq (window-get (current-event-window) + (eq (window-get w 'type) 'transient)) (setq framehigh (+ (- styletab:title-dimension (* styletab:borders-dimension 2)) framew)) (setq framehigh (+ styletab:title-dimension framew)))) - (setq dim-x (- (car (window-dimensions (current-event-window))) + (setq dim-x (- (car (window-dimensions w)) framehigh)) - (setq dim-y (+ (cdr (window-dimensions (current-event-window))) + (setq dim-y (+ (cdr (window-dimensions w)) framehigh)) (if (>= (+ pos-x dim-x framehigh framew framew) (screen-width)) (setq pos-x (- (screen-width) dim-x styletab:title-dimension framew))) - (map-window-group - (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))))) + (window-put w 'title-position 'right) + (tab-refresh-group w 'title-position) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y))))) (def-frame-class tabbar-vertical-top-edge () (bind-keys tabbar-vertical-top-edge-keymap "Button1-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq dim (window-dimensions (current-event-window))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq dim (window-dimensions w)) + (setq fdim (window-frame-dimensions w)) (when (not (eq current-title 'left)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ (car dim) (cdr dim) styletab:title-dimension)) 3)) (if (eq current-title 'right) (setq framehigh 0) (setq framehigh (+ (- styletab:title-dimension (* styletab:borders-dimension 2)) framew))) - (setq dim-x (- (car (window-dimensions (current-event-window))) + (setq dim-x (- (car (window-dimensions w)) framehigh)) - (setq dim-y (+ (cdr (window-dimensions (current-event-window))) + (setq dim-y (+ (cdr (window-dimensions w)) framehigh)) (if (<= pos-x 0) (setq pos-x 0)) - (map-window-group - (lambda (x) - (window-put x 'title-position 'left)) (current-event-window))) + (window-put w 'title-position 'left) + (tab-refresh-group w 'title-position)) (when (eq current-title 'left) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ dim-x dim-y styletab:title-dimension)) 3)) - (if (or (eq (window-get (current-event-window) + (if (or (eq (window-get w 'type) 'default) - (eq (window-get (current-event-window) + (eq (window-get w 'type) 'transient)) (setq framehigh (- styletab:title-dimension (* styletab:borders-dimension 2))) (setq framehigh styletab:title-dimension)) @@ -624,34 +626,35 @@ (if (>= (+ pos-y dim-y styletab:title-dimension framew) (screen-height)) (setq pos-y (- (screen-height) dim-y styletab:title-dimension framew))) (if (<= pos-y 0) (setq pos-y 0)) - (map-window-group - (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)))) + (window-put w 'title-position 'bottom) + (tab-refresh-group w 'title-position)) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y)))) (bind-keys tabbar-vertical-top-edge-keymap "Button2-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq fdim (window-frame-dimensions w)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ dim-x dim-y styletab:title-dimension)) 3)) - (if (or (eq (window-get (current-event-window) + (if (or (eq (window-get w 'type) 'default) - (eq (window-get (current-event-window) + (eq (window-get w 'type) 'transient)) (setq framehigh (- styletab:title-dimension (* styletab:borders-dimension 2))) (setq framehigh styletab:title-dimension)) @@ -660,50 +663,50 @@ (if (>= (+ pos-y dim-y styletab:title-dimension framew) (screen-height)) (setq pos-y (- (screen-height) dim-y styletab:title-dimension framew))) (if (<= pos-y 0) (setq pos-y 0)) - (map-window-group - (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)))) + (window-put w 'title-position 'top) + (tab-refresh-group w 'title-position) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y)))) (bind-keys tabbar-vertical-top-edge-keymap "Button3-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (require 'sawfish.wm.tabs.tabgroup) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (unshade-window (current-event-window)) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq dim (window-dimensions (current-event-window))) - (setq fdim (window-frame-dimensions (current-event-window))) + (setq current-title (window-get w 'title-position))) + (unshade-window w) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq dim (window-dimensions w)) + (setq fdim (window-frame-dimensions w)) (when (not (eq current-title 'right)) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ (car dim) (cdr dim) styletab:title-dimension)) 3)) (if (eq current-title 'left) (setq framehigh 0) (setq framehigh (+ (- styletab:title-dimension (* styletab:borders-dimension 2)) framew))) - (setq dim-x (- (car (window-dimensions (current-event-window))) + (setq dim-x (- (car (window-dimensions w)) framehigh)) - (setq dim-y (+ (cdr (window-dimensions (current-event-window))) + (setq dim-y (+ (cdr (window-dimensions w)) framehigh)) (if (>= (+ pos-x dim-x) (screen-width)) (setq pos-x (- (screen-width) dim-x styletab:title-dimension framew))) - (map-window-group - (lambda (x) - (window-put x 'title-position 'right)) (current-event-window))) + (window-put w 'title-position 'right) + (tab-refresh-group w 'title-position)) (when (eq current-title 'right) (setq framew (/ (- (+ (car fdim) (cdr fdim)) (+ dim-x dim-y styletab:title-dimension)) 3)) - (if (or (eq (window-get (current-event-window) + (if (or (eq (window-get w 'type) 'default) - (eq (window-get (current-event-window) + (eq (window-get w 'type) 'transient)) (setq framehigh (- styletab:title-dimension (* styletab:borders-dimension 2))) (setq framehigh styletab:title-dimension)) @@ -712,13 +715,12 @@ (if (>= (+ pos-y dim-y styletab:title-dimension framew) (screen-height)) (setq pos-y (- (screen-height) dim-y styletab:title-dimension framew))) (if (<= pos-y 0) (setq pos-y 0)) - (map-window-group - (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))))) + (window-put w 'title-position 'bottom) + (tab-refresh-group w 'title-position)) + (call-window-hook 'window-state-change-hook w (list '(title-position))) + (tab-refresh-group w 'reframe) + (move-window-to w pos-x pos-y) + (resize-window-to w dim-x dim-y))))) (defvar prev-button-keymap (bind-keys (make-keymap) @@ -737,18 +739,19 @@ frame-typ-button-keymap "Button1-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq type (window-get (current-event-window) 'type)) + (setq current-title (window-get w 'title-position))) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq type (window-get w 'type)) (if (eq type 'default) (setq typ 'transient) (setq typ 'default)) @@ -771,25 +774,26 @@ (eq current-title 'bottom))) (setq dim-x (+ dim-x styletab:borders-dimension)) (setq dim-y (- dim-y styletab:borders-dimension)))) - (set-window-type (current-event-window) typ) - (move-resize-window-to (current-event-window) pos-x pos-y dim-x dim-y)))) + (set-window-type w typ) + (move-resize-window-to w pos-x pos-y dim-x dim-y)))) (bind-keys frame-typ-button-keymap "Button2-Off" '(call-command (lambda () - (if (eq (window-get (current-event-window) 'title-position) nil) + (setq w (current-event-window)) + (if (eq (window-get w 'title-position) nil) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq type (window-get (current-event-window) 'type)) + (setq current-title (window-get w 'title-position))) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq type (window-get w 'type)) (when (or (eq type 'default) (eq type 'transient)) (setq typ 'shaped) @@ -809,25 +813,26 @@ (eq current-title 'bottom)) (setq dim-y (+ dim-y styletab:title-dimension)) (setq dim-x (+ dim-x styletab:title-dimension)))) - (set-window-type (current-event-window) 'unframed) - (move-resize-window-to (current-event-window) pos-x pos-y dim-x dim-y)))) + (set-window-type w 'unframed) + (move-resize-window-to w pos-x pos-y dim-x dim-y)))) (bind-keys frame-typ-button-keymap "Button3-Off" '(call-command (lambda () - (if (not (window-get (current-event-window) 'title-position)) + (setq w (current-event-window)) + (if (not (window-get w 'title-position)) (case styletab:titlebar-place ((top) (setq current-title 'top)) ((bottom) (setq current-title 'bottom)) ((left) (setq current-title 'left)) ((right) (setq current-title 'right))) - (setq current-title (window-get (current-event-window) 'title-position))) - (setq pos-x (car (window-position (current-event-window)))) - (setq pos-y (cdr (window-position (current-event-window)))) - (setq dim-x (car (window-dimensions (current-event-window)))) - (setq dim-y (cdr (window-dimensions (current-event-window)))) - (setq type (window-get (current-event-window) 'type)) + (setq current-title (window-get w 'title-position))) + (setq pos-x (car (window-position w))) + (setq pos-y (cdr (window-position w))) + (setq dim-x (car (window-dimensions w))) + (setq dim-y (cdr (window-dimensions w))) + (setq type (window-get w 'type)) (if (or (eq type 'shaped) (eq type 'utility)) (setq typ 'shaped-transient) @@ -850,8 +855,8 @@ (eq current-title 'bottom))) (setq dim-x (- dim-x styletab:borders-dimension)) (setq dim-y (+ dim-y styletab:borders-dimension)))) - (set-window-type (current-event-window) typ) - (move-resize-window-to (current-event-window) pos-x pos-y dim-x dim-y))))) + (set-window-type w typ) + (move-resize-window-to w pos-x pos-y dim-x dim-y))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; make images ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2366,13 +2371,13 @@ (add-frame-style theme-name (lambda (w type) (case type - ((default) normal-frame) - ((shaped) shaped-frame) - ((transient) transient-frame) - ((shaped-transient) shaped-transient-frame) - ((utility) normal-frame) - ((shaded-utility) normal-frame) - ((unframed) nil-frame)))) + ((default) normal-frame) + ((shaped) shaped-frame) + ((transient) transient-frame) + ((shaped-transient) shaped-transient-frame) + ((utility) normal-frame) + ((shaded-utility) normal-frame) + ((unframed) nil-frame)))) (define (current-title-w w) (if (not (window-get w 'title-position))
Attachment:
signature.asc
Description: PGP signature