fix -quic for setter functions (using QSET instead of QFUN) which are not available as EQL functions (unlike in C++)
This commit is contained in:
parent
ac63828762
commit
7f3a2145ed
1 changed files with 20 additions and 3 deletions
|
|
@ -173,6 +173,18 @@
|
|||
(return-from find-qt-method (prin1-to-string (if name** (cdr name**) name)))))
|
||||
(setf class (qsuper-class-name class)))))
|
||||
|
||||
(defun find-qt-setter (var name)
|
||||
(let ((class (gethash var *classes*))
|
||||
(name* (format nil " ~C~A"
|
||||
(char-downcase (char name 3))
|
||||
(subseq name #.(length "setX")))))
|
||||
(loop
|
||||
(unless class
|
||||
(return))
|
||||
(x:when-it (qapropos* name* class)
|
||||
(return-from find-qt-setter (prin1-to-string (subseq name* 1))))
|
||||
(setf class (qsuper-class-name class)))))
|
||||
|
||||
(defun prepare-args (args)
|
||||
(remove-if (lambda (x) (search "static_cast<" x))
|
||||
(cond ((and (string= "QColor" (first args)) (find (length args) '(4 5)))
|
||||
|
|
@ -181,9 +193,14 @@
|
|||
(let ((args* (copy-list args))
|
||||
variant variant-type cursor url)
|
||||
(dotimes (i (length args))
|
||||
(x:when-it (and (string= "(qfun" (nth i args))
|
||||
(find-qt-method (nth (1+ i) args) (nth (+ i 2) args)))
|
||||
(setf (nth (+ i 2) args*) x:it)))
|
||||
(when (string= "(qfun" (nth i args))
|
||||
(let ((var (nth (1+ i) args))
|
||||
(name (nth (+ i 2) args)))
|
||||
(x:if-it (find-qt-method var name)
|
||||
(setf (nth (+ i 2) args*) x:it)
|
||||
(x:when-it* (find-qt-setter var name)
|
||||
(setf (nth i args*) "(qset"
|
||||
(nth (+ i 2) args*) x:it*))))))
|
||||
(mapcar (lambda (arg)
|
||||
(cond (variant
|
||||
(setf variant nil)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue