<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>214180</bug_id>
          
          <creation_ts>2020-07-10 04:03:56 -0700</creation_ts>
          <short_desc>[GTK] MiniBrowser: title of back-forward menu items needs to be truncated when it&apos;s too large</short_desc>
          <delta_ts>2020-07-10 23:32:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670401</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-10 04:03:56 -0700</bug_when>
    <thetext>The popover menu doesn&apos;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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670403</commentid>
    <comment_count>1</comment_count>
      <attachid>403956</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-10 04:06:36 -0700</bug_when>
    <thetext>Created attachment 403956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670420</commentid>
    <comment_count>2</comment_count>
      <attachid>403956</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-10 05:38:26 -0700</bug_when>
    <thetext>Comment on attachment 403956
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=403956&amp;action=review

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:235
&gt; +            displayTitle[MAX_TITLE - 1] = &apos;.&apos;;

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;

😉️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670428</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-10 06:20:27 -0700</bug_when>
    <thetext>Committed r264217: &lt;https://trac.webkit.org/changeset/264217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670534</commentid>
    <comment_count>4</comment_count>
      <attachid>403956</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-10 12:41:01 -0700</bug_when>
    <thetext>Comment on attachment 403956
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=403956&amp;action=review

&gt;&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:235
&gt;&gt; +            displayTitle[MAX_TITLE - 1] = &apos;.&apos;;
&gt; 
&gt; I would use an actual ellipsis character (“…”, U+2026) which in
&gt; UTF-8 is the sequence of bytes 0xE2, 0x80, 0xA6:
&gt; 
&gt;   displayTitle[MAX_TITLE - 3] = 0xE2;
&gt;   displayTitle[MAX_TITLE - 2] = 0x80;
&gt;   displayTitle[MAX_TITLE - 1] = 0xA6;
&gt; 
&gt; 😉️

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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670726</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-10 23:32:48 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #4)
&gt; Comment on attachment 403956 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403956&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:235
&gt; &gt;&gt; +            displayTitle[MAX_TITLE - 1] = &apos;.&apos;;
&gt; &gt; 
&gt; &gt; I would use an actual ellipsis character (“…”, U+2026) which in
&gt; &gt; UTF-8 is the sequence of bytes 0xE2, 0x80, 0xA6:
&gt; &gt; 
&gt; &gt;   displayTitle[MAX_TITLE - 3] = 0xE2;
&gt; &gt;   displayTitle[MAX_TITLE - 2] = 0x80;
&gt; &gt;   displayTitle[MAX_TITLE - 1] = 0xA6;
&gt; &gt; 
&gt; &gt; 😉️
&gt; 
&gt; I just had a sudden realization: If the “MAX_TITLE - 3” index falls
&gt; in the middle of an UTF-8 multi byte sequence, the string resulting
&gt; from ellipsizing this way results in an invalid UTF-8 string.
&gt; 
&gt; Dunno if there is a better option, but one idea would be to use
&gt; g_utf8_offset_to_pointer(displayTitle, MAX_TITLE - 3) to find out
&gt; the corresponding byte offset for the amount of *Unicode* characters
&gt; (not bytes) we want to show before the ellipsis, and then append the
&gt; ellipsis there.
&gt; 
&gt; Sorry for not noticing this earlier.

You are right, I&apos;ll try to fix it in a follow up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403956</attachid>
            <date>2020-07-10 04:06:36 -0700</date>
            <delta_ts>2020-07-10 12:41:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>mb-history-title.diff</filename>
            <type>text/plain</type>
            <size>2832</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZGFk
MmFkMmUxMjUuLjY0YzM5OTNmYWZhZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTEwICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBNaW5pQnJv
d3NlcjogdGl0bGUgb2YgYmFjay1mb3J3YXJkIG1lbnUgaXRlbXMgbmVlZHMgdG8gYmUgdHJ1bmNh
dGVkIHdoZW4gaXQncyB0b28gbGFyZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNDE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBwb3BvdmVyIG1lbnUgZG9lc24ndCBzZXQgZWxsaXBzaXplIG9u
IHRoZSBpbm5lciBsYWJlbCwgc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseS4gSW4gdGhlIGNh
c2Ugb2YgR1RLNCB3ZQorICAgICAgICBhbHNvIG5lZWQgdG8gbWFya3VwIGVzY2FwZSBpdC4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgIChicm93
c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KToKKwogMjAyMC0wNy0wOSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTbGFjay1hd2FyZSBXZWJL
aXRCb3QgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmlu
ZGV4IDVjZDg0ZGFjM2QzNC4uZDliYjBiMGZlN2YyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKQEAgLTIyNSw2ICsyMjUsMjggQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRv
d0NyZWF0ZUJhY2tGb3J3YXJkTWVudShCcm93c2VyV2luZG93ICp3aW5kb3csIEdMaXN0ICpsaXMK
ICAgICAgICAgaWYgKCF0aXRsZSB8fCAhKnRpdGxlKQogICAgICAgICAgICAgdGl0bGUgPSB3ZWJr
aXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfdXJpKGl0ZW0pOwogCisgICAgICAgIGNoYXIg
KmRpc3BsYXlUaXRsZTsKKyNkZWZpbmUgTUFYX1RJVExFIDEwMAorI2lmIEdUS19DSEVDS19WRVJT
SU9OKDMsIDk4LCA1KQorICAgICAgICBjaGFyICplc2NhcGVkVGl0bGUgPSBnX21hcmt1cF9lc2Nh
cGVfdGV4dCh0aXRsZSwgLTEpOworICAgICAgICBpZiAoc3RybGVuKGVzY2FwZWRUaXRsZSkgPiBN
QVhfVElUTEUpIHsKKyAgICAgICAgICAgIGRpc3BsYXlUaXRsZSA9IGdfc3RybmR1cChlc2NhcGVk
VGl0bGUsIE1BWF9USVRMRSk7CisgICAgICAgICAgICBnX2ZyZWUoZXNjYXBlZFRpdGxlKTsKKyAg
ICAgICAgICAgIGRpc3BsYXlUaXRsZVtNQVhfVElUTEUgLSAxXSA9ICcuJzsKKyAgICAgICAgICAg
IGRpc3BsYXlUaXRsZVtNQVhfVElUTEUgLSAyXSA9ICcuJzsKKyAgICAgICAgICAgIGRpc3BsYXlU
aXRsZVtNQVhfVElUTEUgLSAzXSA9ICcuJzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBk
aXNwbGF5VGl0bGUgPSBlc2NhcGVkVGl0bGU7CisjZWxzZQorICAgICAgICBkaXNwbGF5VGl0bGUg
PSBnX3N0cm5kdXAodGl0bGUsIE1JTihNQVhfVElUTEUsIHN0cmxlbih0aXRsZSkpKTsKKyAgICAg
ICAgaWYgKHN0cmxlbih0aXRsZSkgPiBNQVhfVElUTEUpIHsKKyAgICAgICAgICAgIGRpc3BsYXlU
aXRsZVtNQVhfVElUTEUgLSAxXSA9ICcuJzsKKyAgICAgICAgICAgIGRpc3BsYXlUaXRsZVtNQVhf
VElUTEUgLSAyXSA9ICcuJzsKKyAgICAgICAgICAgIGRpc3BsYXlUaXRsZVtNQVhfVElUTEUgLSAz
XSA9ICcuJzsKKyAgICAgICAgfQorI2VuZGlmCisjdW5kZWYgTUFYX1RJVExFCisKICAgICAgICAg
Y2hhciAqYWN0aW9uTmFtZSA9IGdfc3RyZHVwX3ByaW50ZigiYWN0aW9uLSVsdSIsICsrYWN0aW9u
SWQpOwogICAgICAgICBHU2ltcGxlQWN0aW9uICphY3Rpb24gPSBnX3NpbXBsZV9hY3Rpb25fbmV3
KGFjdGlvbk5hbWUsIE5VTEwpOwogICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKGFjdGlvbiksICJiYWNrLWZvcndhcmQtbGlzdC1pdGVtIiwgZ19vYmplY3RfcmVmKGl0ZW0p
LCBnX29iamVjdF91bnJlZik7CkBAIC0yMzMsMTAgKzI1NSwxMSBAQCBzdGF0aWMgdm9pZCBicm93
c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR0xp
c3QgKmxpcwogICAgICAgICBnX29iamVjdF91bnJlZihhY3Rpb24pOwogCiAgICAgICAgIGNoYXIg
KmRldGFpbGVkQWN0aW9uTmFtZSA9IGdfc3RyZHVwX3ByaW50ZigiJXMuJXMiLCBpc0JhY2sgPyAi
YmYtYmFjayIgOiAiYmYtZm9yd2FyZCIsIGFjdGlvbk5hbWUpOwotICAgICAgICBHTWVudUl0ZW0g
Km1lbnVJdGVtID0gZ19tZW51X2l0ZW1fbmV3KHRpdGxlLCBkZXRhaWxlZEFjdGlvbk5hbWUpOwor
ICAgICAgICBHTWVudUl0ZW0gKm1lbnVJdGVtID0gZ19tZW51X2l0ZW1fbmV3KGRpc3BsYXlUaXRs
ZSwgZGV0YWlsZWRBY3Rpb25OYW1lKTsKICAgICAgICAgZ19tZW51X2FwcGVuZF9pdGVtKG1lbnUs
IG1lbnVJdGVtKTsKICAgICAgICAgZ19vYmplY3RfdW5yZWYobWVudUl0ZW0pOwogCisgICAgICAg
IGdfZnJlZShkaXNwbGF5VGl0bGUpOwogICAgICAgICBnX2ZyZWUoZGV0YWlsZWRBY3Rpb25OYW1l
KTsKICAgICAgICAgZ19mcmVlKGFjdGlvbk5hbWUpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>