summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kochmański <daniel@turtleware.eu>2024-09-17 14:01:05 +0200
committerDaniel Kochmański <daniel@turtleware.eu>2024-09-17 14:22:36 +0200
commit32f8af18983b148ffb4658eb9dd4226df371bb46 (patch)
tree3d91c3d0c8761bd48b6fdbbd7f58754a8d842516
parentd3316fc006f6e8049c58f11df9e0a4786e543fe6 (diff)
drei: fixup for the repaint queue drawing model
-rw-r--r--Core/clim/input-editing-drei.lisp8
-rw-r--r--Libraries/Drei/drei-clim.lisp2
-rw-r--r--Libraries/Drei/drei-redisplay.lisp7
3 files changed, 6 insertions, 11 deletions
diff --git a/Core/clim/input-editing-drei.lisp b/Core/clim/input-editing-drei.lisp
index 1ef253d1..cb7a5eae 100644
--- a/Core/clim/input-editing-drei.lisp
+++ b/Core/clim/input-editing-drei.lisp
@@ -66,12 +66,10 @@ activated with GESTURE"))
(funcall input-sensitizer
real-stream
#'(lambda ()
- (stream-add-output-record real-stream record)
- (when (stream-drawing-p real-stream)
- (replay record real-stream)))))
- ;; We still want to replay it for the cursor visibility change...
+ (stream-add-output-record real-stream record))))
+ ;; We still want to repaint it for the cursor visibility change...
((stream-drawing-p real-stream)
- (replay record real-stream) ))
+ (dispatch-repaint real-stream record)))
;; FIXME this causes a line break even on an empty input. A most notable
;; example is when the command is accepted with :ECHO NIL -- jd 2022-12-09
(setf (stream-cursor-position real-stream)
diff --git a/Libraries/Drei/drei-clim.lisp b/Libraries/Drei/drei-clim.lisp
index 19bc92d4..23e9b922 100644
--- a/Libraries/Drei/drei-clim.lisp
+++ b/Libraries/Drei/drei-clim.lisp
@@ -518,7 +518,7 @@ record."))
(call-next-method)))
(defmethod (setf active) :after (new-val (drei drei-area))
- (replay drei (editor-pane drei)))
+ (dispatch-repaint (editor-pane drei) drei))
(defmethod additional-command-tables append ((drei drei-area) (table drei-command-table))
`(exclusive-input-editor-table))
diff --git a/Libraries/Drei/drei-redisplay.lisp b/Libraries/Drei/drei-redisplay.lisp
index 20b94f6b..2f62033a 100644
--- a/Libraries/Drei/drei-redisplay.lisp
+++ b/Libraries/Drei/drei-redisplay.lisp
@@ -719,7 +719,7 @@ type (found via `presentation-type-of') to generate output."
(setf (output-record-position output-record)
(values (+ cursor-x 0.1) (- cursor-y baseline)))
(when draw
- (replay output-record stream))
+ (dispatch-repaint stream output-record))
(setf (aref widths 1) width)
(record-stroke stroke parts widths
cursor-x (- cursor-y baseline)
@@ -1090,14 +1090,11 @@ calculated by `drei-bounding-rectangle*'."
(defmethod replay-output-record ((cursor drei-cursor) stream &optional
(x-offset 0) (y-offset 0) (region +everywhere+))
(declare (ignore x-offset y-offset region))
- (with-output-recording-options (stream :record t :draw t)
- (display-drei-view-cursor stream (view cursor) cursor)))
+ (display-drei-view-cursor stream (view cursor) cursor))
(defun display-drei-area (drei)
(with-accessors ((stream editor-pane) (view view)) drei
(with-bounding-rectangle* (old-x1 old-y1 old-x2 old-y2) drei
- (with-output-recording-options (stream :draw nil)
- (replay drei stream))
(with-bounding-rectangle* (new-x1 new-y1 new-x2 new-y2) drei
(unless (or (and (= new-x1 old-x1) (= new-y1 old-y2)
(= new-x2 old-x2) (= new-y2 old-y2))