added some window-exists? checks
made redrawing little more efficient
This commit is contained in:
parent
573d7f43f6
commit
ffa4d4f937
|
@ -3,7 +3,7 @@
|
|||
(normal-colors colors '("#aaaaaa" "#eeeeee" "#777777" "black"))
|
||||
(active-colors colors '("#9999aa" "#eeeeff" "#777788" "black"))
|
||||
(focused-colors colors '("#666699" "#aaaacc" "#333366" "#eeeeee"))
|
||||
(border-style symbol 'raised) ; none | sunken
|
||||
(border-style symbol 'raised) ; flat | sunken
|
||||
(font font "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*")
|
||||
(button-border-style symbol 'flat) ; none | raised
|
||||
)
|
||||
|
@ -55,25 +55,41 @@
|
|||
(wrap (receive-rv event-channel)
|
||||
(lambda (xevent)
|
||||
(cond
|
||||
((or (destroy-window-event? xevent)
|
||||
(not (window-exists? dpy window)))
|
||||
(exit))
|
||||
((expose-event? xevent)
|
||||
(if (and (= 0 (expose-event-count xevent))
|
||||
(window-exists? dpy window))
|
||||
(draw-titlebar tb options gc)))
|
||||
((destroy-window-event? xevent)
|
||||
(exit)))))
|
||||
(draw-titlebar tb options gc))))))
|
||||
(wrap (receive-rv in-channel)
|
||||
(lambda (msg)
|
||||
(case (car msg)
|
||||
((title)
|
||||
(set-titlebar:title! tb (cdr msg))
|
||||
(draw-titlebar tb options gc))
|
||||
(let ((title (cdr msg)))
|
||||
(if (not (equal? (titlebar:title tb) title))
|
||||
(begin
|
||||
(set-titlebar:title! tb title)
|
||||
(draw-titlebar tb options gc)))))
|
||||
((state)
|
||||
(set-titlebar:state! tb (cdr msg))
|
||||
(draw-titlebar tb options gc)))))
|
||||
(let ((state (cdr msg)))
|
||||
(if (not (equal? (titlebar:state tb) state))
|
||||
(begin
|
||||
(set-titlebar:state! tb (cdr msg))
|
||||
(draw-titlebar tb options gc)))))
|
||||
((title+state)
|
||||
(let ((title (second msg))
|
||||
(state (third msg)))
|
||||
(if (or (not (equal? (titlebar:title tb) title))
|
||||
(not (equal? (titlebar:state tb) state)))
|
||||
(begin
|
||||
(set-titlebar:title! tb title)
|
||||
(set-titlebar:state! tb state)
|
||||
(draw-titlebar tb options gc))))))))
|
||||
)
|
||||
(loop))))))
|
||||
(free-gc dpy gc)
|
||||
;; colormap might to exists anymore...
|
||||
;; colormap might not exists anymore...
|
||||
(free-options options #t)))
|
||||
tb))
|
||||
|
||||
|
@ -96,6 +112,9 @@
|
|||
(define (set-titlebar-state! tb state)
|
||||
(send (titlebar:channel tb) (cons 'state state)))
|
||||
|
||||
(define (set-titlebar-title+state! tb title state)
|
||||
(send (titlebar:channel tb) (list 'title+state title state)))
|
||||
|
||||
(define (draw-titlebar tb options gc)
|
||||
(let ((dpy (titlebar:dpy tb))
|
||||
(window (titlebar:window tb))
|
||||
|
@ -121,8 +140,10 @@
|
|||
dark-color light-color)))
|
||||
;; else flat...
|
||||
;; draw the title
|
||||
(set-gc-foreground! dpy gc font-color)
|
||||
(set-gc-background! dpy gc main-color)
|
||||
(change-gc dpy gc
|
||||
(make-gc-value-alist
|
||||
(foreground font-color)
|
||||
(background main-color)))
|
||||
(let ((x.y (text-center-pos r font title)))
|
||||
(draw-image-string dpy window gc (car x.y) (cdr x.y)
|
||||
title))
|
||||
|
|
Loading…
Reference in New Issue