Q: How update the display of tabs in capi:tab-layout?
Hello lispworkers, Is it possible to change the display of items in a tab-layout? I would like to force the print-function of the tab-layout to be called and return the strings different from the original. IMHO, capi:choice-update-item should do that but it does not on LWW 4.6. Below is the code snippet. (capi:define-interface test-tabs () ((suffix :initform "")) (:panes (a capi:text-input-pane :title "A" :text "111") (b capi:text-input-pane :title "B" :text "222")) (:layouts (tab-layout capi:tab-layout () :items '(a b) :visible-child-function nil :print-function (lambda (item) (format nil "~a-~a" item suffix)) :callback-type :interface-data :selection-callback 'tab-on-select))) (defun tab-on-select (interface item) (with-slots (tab-layout) interface (setf (capi:choice-selected-item tab-layout) item (capi:tab-layout-visible-child tab-layout) (slot-value interface item)))) (setq face (capi:display (make-instance 'test-tabs))) (setf (slot-value face 'suffix) "suffix") ; does not update the display of tabs (capi:execute-with-interface face #'capi:choice-update-item (slot-value face 'tab-layout) 'a) ; does work but a bit brutal (capi:execute-with-interface face (lambda (tab-layout) (let ((items (capi:collection-items tab-layout))) (setf (capi:collection-items tab-layout) nil (capi:collection-items tab-layout) items))) (slot-value face 'tab-layout)) -- Sincerely, Dmitriy Ivanov lisp.ystok.ru