[mcclim-cvs] CVS mcclim
tmoore
tmoore at common-lisp.net
Mon Mar 13 06:08:13 UTC 2006
Update of /project/mcclim/cvsroot/mcclim
In directory clnet:/tmp/cvs-serv28040
Modified Files:
frames.lisp
Log Message:
drag-and-drop mostly working except for highlighting of destination presentations
--- /project/mcclim/cvsroot/mcclim/frames.lisp 2006/03/12 23:09:27 1.115
+++ /project/mcclim/cvsroot/mcclim/frames.lisp 2006/03/13 06:08:12 1.116
@@ -1562,7 +1562,7 @@
:filled nil :line-dashes #(4 4))))
(:unhighlight
(with-double-buffering
- ((stream hilite-x1 hilite-y1 hilite-x2 hilite-y2)
+ ((stream hilite-x1 hilite-y1 (1+ hilite-x2) (1+ hilite-y2))
(buffer-rectangle))
(stream-replay stream buffer-rectangle))))))))
@@ -1590,7 +1590,8 @@
:window window
:x x
:y y
- :event event)))
+ :event event)
+ (list trans)))
(find-presentation-translators
(presentation-type from-presentation)
context-type
@@ -1623,13 +1624,11 @@
window x y))
do (return-from find-dest-translator translator))
nil)
- (do-feedback (window x y state do-it)
- (when do-it
- (funcall feedback-fn frame from-presentation window
- initial-x initial-y x y state)))
+ (do-feedback (window x y state)
+ (funcall feedback-fn frame from-presentation window
+ initial-x initial-y x y state))
(do-hilite (presentation window state)
- (when presentation
- (funcall hilite-fn frame presentation window state)))
+ (funcall hilite-fn frame presentation window state))
(last-window ()
(event-sheet last-event))
(last-x ()
@@ -1646,27 +1645,29 @@
(:presentation (&key presentation window event x y)
(let ((dest-translator (find-dest-translator presentation window
x y)))
- (do-feedback (last-window) (last-x) (last-y)
- :unhighlight feedback-activated)
+ (when feedback-activated
+ (do-feedback (last-window) (last-x) (last-y) :unhighlight))
(setq feedback-activated t
last-event event)
- (do-hilite last-presentation (last-window) :unhighlight)
+ (when last-presentation
+ (do-hilite last-presentation (last-window) :unhighlight))
(setq last-presentation presentation
feedback-fn (feedback dest-translator)
hilite-fn (highlighting dest-translator))
(do-hilite presentation window :highlight)
- (do-feedback window x y :highlight t)
+ (do-feedback window x y :highlight)
(document-drag-n-drop dest-translator presentation
context-type frame event window
x y)))
(:pointer-motion (&key event window x y)
- (do-feedback (last-window) (last-x) (last-y)
- :unhighlight feedback-activated)
+ (when feedback-activated
+ (do-feedback (last-window) (last-x) (last-y) :unhighlight))
(setq feedback-activated t
last-event event)
- (do-hilite last-presentation (last-window) :unhighlight)
+ (when last-presentation
+ (do-hilite last-presentation (last-window) :unhighlight))
(setq last-presentation nil)
- (do-feedback window x y :highlight t)
+ (do-feedback window x y :highlight)
(document-drag-n-drop translator nil
context-type frame event window
x y))
@@ -1683,9 +1684,10 @@
;;
;; XXX Assumes x y from :button-release are the same as for the preceding
;; button-motion; is that correct?
- (do-feedback (last-window) (last-x) (last-y)
- :unhighlight feedback-activated)
- (do-hilite last-presentation (last-window) :unhighlight)
+ (when feedback-activated
+ (do-feedback (last-window) (last-x) (last-y) :unhighlight))
+ (when last-presentation
+ (do-hilite last-presentation (last-window) :unhighlight))
(if destination-presentation
(let ((final-translator (find-dest-translator destination-presentation
(last-window)
@@ -1714,14 +1716,19 @@
(window-clear s)
(with-end-of-page-action (s :allow)
(with-end-of-line-action (s :allow)
- (document-presentation-translator translator
- presentation
- context-type
- frame
- event
- window
- x y
- :stream s
- :documentation-type :pointer))))))
+ (funcall (pointer-documentation translator)
+ *dragged-object*
+ :presentation *dragged-presentation*
+ :destination-object (and presentation
+ (presentation-object presentation))
+ :destination-presentation presentation
+ :context-type context-type
+ :frame frame
+ :event event
+ :window window
+ :x x
+ :y y
+ :stream s))))))
+
More information about the Mcclim-cvs
mailing list