[gsharp-cvs] CVS gsharp

rstrandh rstrandh at common-lisp.net
Sat Jun 17 19:15:03 UTC 2006

Update of /project/gsharp/cvsroot/gsharp
In directory clnet:/tmp/cvs-serv3865

Modified Files:
Log Message:
Recompute measures in a :before method on redisplay-frame-pane
as opposed to redisplay-frame-panes.  This turns out to be necessary
because redisplay-frame-panes is not always called.  In particular
redisplay-frame-pane is called from adopt-frame without going through
redisplay-frame-panes, and adopt-frame is called when Gsharp is
started from the CLIM desktop.

--- /project/gsharp/cvsroot/gsharp/gui.lisp	2006/06/14 19:20:41	1.67
+++ /project/gsharp/cvsroot/gsharp/gui.lisp	2006/06/17 19:15:02	1.68
@@ -25,13 +25,17 @@
   ((cursor :initarg :cursor :reader cursor)
    (buffer :initarg :buffer :reader buffer)))
-(defclass gsharp-pane (score-pane:score-pane)
+;;; exists for the sole purpose of a :before method that updates the
+;;; measures of each modified buffer.
+(defclass gsharp-pane-mixin () ())
+(defclass gsharp-pane (score-pane:score-pane gsharp-pane-mixin)
   ((view :initarg :view :accessor view)))	  
 (defvar *info-bg-color* +gray85+)
 (defvar *info-fg-color* +black+)
-(defclass gsharp-info-pane (info-pane)
+(defclass gsharp-info-pane (info-pane gsharp-pane-mixin)
       :height 20 :max-height 20 :min-height 20
@@ -183,8 +187,11 @@
 	      (buffer view))
 	     (setf (score-pane:number-of-pages view) page-number))))
-(defmethod redisplay-frame-panes :before ((frame gsharp) &key force-p)
-  (declare (ignore force-p))
+;;; I tried making this a :before method on redisplay-frame-panes,
+;;; but it turns out that McCLIM calls redisplay-frame-pane from 
+;;; places other than redisplay-frame-panes. 
+(defmethod redisplay-frame-pane :before ((frame gsharp) (pane gsharp-pane-mixin) &key force-p)
+  (declare (ignore pane force-p))
   (mapc #'recompute-measures (buffers frame))
   (update-page-numbers frame))

More information about the Gsharp-cvs mailing list