qt:event upcasting cleanup
Sun Aug 2 13:29:02 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* qt:event upcasting cleanup
hunk ./qt.mbd 48
- ("object" (:needs "qt" "signal-slot" "qstring"))
+ ("event" (:needs "qt"))
+ ("object" (:needs "qt" "signal-slot" "qstring" "event"))
addfile ./src/event.lisp
hunk ./src/event.lisp 1
+(in-package :cl-smoke.qt-impl)
+
+(defun cast-event (event)
+ (enum-case (cxx:type event)
+ ((qt:event.+child-added+ qt:event.+child-removed+
+ qt:event.+child-polished+)
+ (setf (slot-value event 'smoke::pointer)
+ (smoke::upcast event (find-class 'qt:child-event)))
+ (change-class event 'qt:child-event)))
+ event)
hunk ./src/object.lisp 198
- (event (make-instance 'qt:event
- :pointer (cffi:mem-aref data :pointer 1))))
+ (event (cast-event
+ (make-instance 'qt:event
+ :pointer (cffi:mem-aref data :pointer 1)))))
hunk ./src/object.lisp 203
- (let ((child-event (make-instance 'qt:child-event
- :pointer
- (smoke::upcast event (find-class 'qt:child-event)))))
- (tg:cancel-finalization (cxx:child child-event))
- (when (smoke::has-pointer-p (smoke::pointer (cxx:child child-event)))
- (unless receiver
- (setf receiver (ensure-smoke-parent (cxx:child child-event))))
- (smoke::transfer-ownership-to (cxx:child child-event) receiver))))
+ (tg:cancel-finalization (cxx:child event))
+ (when (smoke::has-pointer-p (smoke::pointer (cxx:child event)))
+ (unless receiver
+ (setf receiver (ensure-smoke-parent (cxx:child event))))
+ (smoke::transfer-ownership-to (cxx:child event) receiver)))
hunk ./src/object.lisp 209
- (let* ((child-event (make-instance 'qt:child-event
- :pointer (smoke::upcast event
- (find-class 'qt:child-event)))))
- ;; We receive child removed events for any QObject, whether
- ;; it was constructed by Smoke or not. Only take ownership of
- ;; objects that have been constructed by Smoke.
- (when (smoke::has-pointer-p (smoke::pointer (cxx:child child-event)))
- (assert receiver)
- (smoke::take-ownership (cxx:child child-event) receiver))))))
+ ;; We receive child removed events for any QObject, whether
+ ;; it was constructed by Smoke or not. Only take ownership of
+ ;; objects that have been constructed by Smoke.
+ (when (smoke::has-pointer-p (smoke::pointer (cxx:child event)))
+ (assert receiver)
+ (smoke::take-ownership (cxx:child event) receiver)))))