Update of /project/mcclim/cvsroot/mcclim/Backends/gtkairo In directory clnet:/tmp/cvs-serv26810
Modified Files: clim-fix.lisp Log Message: ... and this turned out to be a similar but unrelated display glitch:
* clim-fix.lisp (handle-repaint): Restored the first version of this method form Gilbert's original clim-fix.lisp, which draws background ink before each repaint. Doesn't seem elegant, but DEMODEMO wants it.
--- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/clim-fix.lisp 2006/04/30 09:24:40 1.3 +++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/clim-fix.lisp 2006/05/02 13:02:09 1.4 @@ -24,8 +24,20 @@ ;;; :design design) ;;; (call-next-method))
-(defmethod clim:handle-repaint :after ((s clim:sheet-with-medium-mixin) r) - (medium-force-output (sheet-medium s))) +(defmethod clim:handle-repaint :around ((s clim:sheet-with-medium-mixin) r) + (let ((m (clim:sheet-medium s)) + (r (clim:bounding-rectangle + (clim:region-intersection r (clim:sheet-region s))))) + (unless (eql r clim:+nowhere+) + ;; Test case: Start CLIM-DEMO::DEMODEMO and watch the header string. + ;; At the beginning, the text is nicely antialiased. Then start any + ;; demo and move the new window around over the header. As the + ;; header gets exposed again, the text is apparently redrawn + ;; multiple times and looks like crap. This fixes it: + (clim:with-drawing-options (m :clipping-region r) + (clim:draw-design m r :ink clim:+background-ink+) + (call-next-method s r))) + (medium-force-output m)))
;; cairo hack: adjust rectangle coordinates by half a pixel each to avoid ;; anti-aliasing (and follow-up output artifacts)