The popover menu doesn't set ellipsize on the inner label, so we need to do it manually. In the case of GTK4 we also need to markup escape it.
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.