| Summary: | [GTK] MiniBrowser: title of back-forward menu items needs to be truncated when it's too large | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Carlos Garcia Campos <cgarcia> | ||||
| Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | CC: | aperez, bugs-noreply | ||||
| Priority: | P2 | Keywords: | Gtk | ||||
| Version: | WebKit Nightly Build | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Attachments: |
|
||||||
|
Description
Carlos Garcia Campos
2020-07-10 04:03:56 PDT
Created attachment 403956 [details]
Patch
Comment on attachment 403956 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=403956&action=review > Tools/MiniBrowser/gtk/BrowserWindow.c:235 > + displayTitle[MAX_TITLE - 1] = '.'; I would use an actual ellipsis character (“…”, U+2026) which in UTF-8 is the sequence of bytes 0xE2, 0x80, 0xA6: displayTitle[MAX_TITLE - 3] = 0xE2; displayTitle[MAX_TITLE - 2] = 0x80; displayTitle[MAX_TITLE - 1] = 0xA6; 😉️ Committed r264217: <https://trac.webkit.org/changeset/264217> Comment on attachment 403956 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=403956&action=review >> Tools/MiniBrowser/gtk/BrowserWindow.c:235 >> + displayTitle[MAX_TITLE - 1] = '.'; > > I would use an actual ellipsis character (“…”, U+2026) which in > UTF-8 is the sequence of bytes 0xE2, 0x80, 0xA6: > > displayTitle[MAX_TITLE - 3] = 0xE2; > displayTitle[MAX_TITLE - 2] = 0x80; > displayTitle[MAX_TITLE - 1] = 0xA6; > > 😉️ I just had a sudden realization: If the “MAX_TITLE - 3” index falls in the middle of an UTF-8 multi byte sequence, the string resulting from ellipsizing this way results in an invalid UTF-8 string. Dunno if there is a better option, but one idea would be to use g_utf8_offset_to_pointer(displayTitle, MAX_TITLE - 3) to find out the corresponding byte offset for the amount of *Unicode* characters (not bytes) we want to show before the ellipsis, and then append the ellipsis there. Sorry for not noticing this earlier. (In reply to Adrian Perez from comment #4) > Comment on attachment 403956 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=403956&action=review > > >> Tools/MiniBrowser/gtk/BrowserWindow.c:235 > >> + displayTitle[MAX_TITLE - 1] = '.'; > > > > I would use an actual ellipsis character (“…”, U+2026) which in > > UTF-8 is the sequence of bytes 0xE2, 0x80, 0xA6: > > > > displayTitle[MAX_TITLE - 3] = 0xE2; > > displayTitle[MAX_TITLE - 2] = 0x80; > > displayTitle[MAX_TITLE - 1] = 0xA6; > > > > 😉️ > > I just had a sudden realization: If the “MAX_TITLE - 3” index falls > in the middle of an UTF-8 multi byte sequence, the string resulting > from ellipsizing this way results in an invalid UTF-8 string. > > Dunno if there is a better option, but one idea would be to use > g_utf8_offset_to_pointer(displayTitle, MAX_TITLE - 3) to find out > the corresponding byte offset for the amount of *Unicode* characters > (not bytes) we want to show before the ellipsis, and then append the > ellipsis there. > > Sorry for not noticing this earlier. You are right, I'll try to fix it in a follow up. |