Most widgets work now. Just a list-view is still problematic.
Entries containing special characters are still not displayed correctly:

(mk-listbox :columns (def-columns (:string (:title "foo äöüß bar")))
            :items '( '("foo äöüß bar") '("foo äöüß bar")))

I fixed that one, too. The problem was roughly that the string was converted to utf-8 *twice*. cells-gtk read a utf-8 string back from gtk, forgot to decode it, then encoded it *again* and sent it back to gtk.

The fix is fairly straight forward. However, I decided to move this stuff into a new file, thus factoring out the implementation dependent stuff. Thus the patch got somewhat big, maybe it does more than you want. I'll mail it in a second to the list and cc you.

If you just want to get this working, just add the following function to gtk-utilities.lisp

(defun utf-8-to-lisp (str)
  (when str
   #+sbcl (let ((s (sb-ext:string-to-octets str :external-format :utf-8)))
            (sb-ext:octets-to-string
             (coerce (loop for i from 0 below (length s)
                        for b = (aref s i)
                        collect b
if (= b 195) do (incf i 2)) ; ph: gtk gives us 4 bytes per char -- no idea why.
                     '(vector (unsigned-byte 8)))
             :external-format :utf-8))
   #-(or sbcl) str))

and change the function gtk-tree-model-get-typed-item-value in gtk-utilities.lisp:

....
          (cond
(ret$ (utf-8-to-lisp (uffi:convert-from-cstring ret$))) ; ph 01/2008: here we need to convert back from gtk utf-8 to lisp
            ((eq col-type :boolean)
...

That did the trick for me.

Peter


Should list-store check weather item-types is string and do the conversation?

Best, Ingo


_______________________________________________
cells-gtk-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-gtk-devel

Reply via email to