On Thu May 3 2012 16:08:56 Ladislav Slezak wrote:
Hi all,
I found out that sorting a table in Yast does not work the same way in all UIs.
The Qt UI respects the current locale, while ncurses and Gtk always use standard C (ASCII) sorting. That makes a trouble when sorting texts with accents.
E.g. ["Z", "Ž", "á", "Á", "A", "a"] is in Qt sorted as users would expect ["a", "A", "á", "Á", "Z", "Ž"] (unless the locale is C/POSIX), while the others always display ["A", "Z", "a", "Á", "á", "Ž"], which is IMHO a bug.
The problem is additionally complicated by the locale setting, i.e. it depends on invocation, ssh or su/kdesu keeps the current locale, but "su -" or logging in a text console sets POSIX locale (which results in C sorting).
On the other hand locale sorting does not work correctly with numbers, in the repository module I pad priority number with spaces so in C sorting values " 90" and "100" are sorted correctly. However, this does not work when locale sorting is active, the values are in order like this: " 99", " 90", "105", "100", which looks strange. So C sorting would be good here.
So how to solve all these problems?
- I think table sorting should respect the current locale (so there is a bug in Gtk/ncurses) I agree.
- The numeric sorting problem can be solved by padding numbers with zeroes instead of spaces e.g. "090" instead of " 90" - it does not look nice but I haven't found any better solution. Any idea? (I tried some tricks with UTF-8 non-breakable space but that didn't help.)
I'd propose _NOT_ to add zeros to the ycp code, because it makes the table unreadable. It's an UI issue that needs to be fixed in the UI. I just fixed the numeric sorting in yast2-qt (version 2.22.6). Columns that contain digits only are sorted in numeric order now. Cheers, Thomas -- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer, HRB 16746 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany