RESOLVED FIXED 213564
[iOS] -_requestTextInputContextsInRect cannot find empty Quip spreadsheet title
https://bugs.webkit.org/show_bug.cgi?id=213564
Summary [iOS] -_requestTextInputContextsInRect cannot find empty Quip spreadsheet title
Daniel Bates
Reported 2020-06-24 09:39:25 PDT
The spreadsheet title in a Quip spreadsheet is an editable inline element. When it has no content, which can happen if you delete it, then it has zero width and in this state it is not found by -_requestTextInputContextsInRect.
Attachments
Patch (12.27 KB, patch)
2020-06-24 12:59 PDT, Daniel Bates
no flags
To land (11.84 KB, patch)
2020-06-25 15:00 PDT, Daniel Bates
no flags
To land (11.79 KB, patch)
2020-06-25 15:01 PDT, Daniel Bates
no flags
To land (11.80 KB, patch)
2020-06-25 15:02 PDT, Daniel Bates
no flags
Daniel Bates
Comment 1 2020-06-24 09:39:40 PDT
Daniel Bates
Comment 2 2020-06-24 12:59:12 PDT
Daniel Bates
Comment 3 2020-06-25 14:27:32 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review > Source/WebCore/ChangeLog:12 > + and painting them. It's complicated to patch up all this up with a 100% correct this up => this
Daniel Bates
Comment 4 2020-06-25 14:28:32 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review > Source/WebCore/ChangeLog:17 > + (They can only be found when focused using a keyboard or random tapping/clicking). random tapping/clicking => tapping/clicking on them
Simon Fraser (smfr)
Comment 5 2020-06-25 14:28:36 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review > Source/WebCore/ChangeLog:17 > + solution without forcing more line box creation. It's clear to me that the customer > + experience will be significantly better if the focused editable no line box case > + is handled, but it's unclear whether that can be topped by patching everything to > + track all editable inlines without a line box because they are not discoverable. > + (They can only be found when focused using a keyboard or random tapping/clicking). Maybe you don't need all these words. > Source/WebCore/platform/graphics/FloatRect.cpp:57 > +bool FloatRect::intersectsEvenIfEmpty(const FloatRect& other) const This is ambiguous about which rect might be empty. Is it |this| or other or both?
Daniel Bates
Comment 6 2020-06-25 14:31:07 PDT
It's clear to me that the customer experience will be significantly better if the focused editable no line box case is handled, but it's unclear whether that can be topped by patching everything to track all editable inlines without a line box because they are not discoverable. (They can only be found when focused using a keyboard or tapping/clicking on them). So, I chose to fix this bug by adding a special case in the code.
Daniel Bates
Comment 7 2020-06-25 14:38:54 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review >>> Source/WebCore/ChangeLog:17 >>> + (They can only be found when focused using a keyboard or random tapping/clicking). >> >> random tapping/clicking => tapping/clicking on them > > Maybe you don't need all these words. Copied a bunch of ^^^ words into a bugzilla comment to capture them...I'll remove them from the change log >> Source/WebCore/platform/graphics/FloatRect.cpp:57 >> +bool FloatRect::intersectsEvenIfEmpty(const FloatRect& other) const > > This is ambiguous about which rect might be empty. Is it |this| or other or both? Both could be empty. I just was following the naming convention of uniteIfEmpty(). I can't think of a better name, right now.
Daniel Bates
Comment 8 2020-06-25 14:45:28 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review >>> Source/WebCore/platform/graphics/FloatRect.cpp:57 >>> +bool FloatRect::intersectsEvenIfEmpty(const FloatRect& other) const >> >> This is ambiguous about which rect might be empty. Is it |this| or other or both? > > Both could be empty. I just was following the naming convention of uniteIfEmpty(). I can't think of a better name, right now. Renaming inclusiveIntersection() on your private chat suggestion.
Daniel Bates
Comment 9 2020-06-25 14:45:45 PDT
Thanks Simon!
Daniel Bates
Comment 10 2020-06-25 14:48:12 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review >>>> Source/WebCore/platform/graphics/FloatRect.cpp:57 >>>> +bool FloatRect::intersectsEvenIfEmpty(const FloatRect& other) const >>> >>> This is ambiguous about which rect might be empty. Is it |this| or other or both? >> >> Both could be empty. I just was following the naming convention of uniteIfEmpty(). I can't think of a better name, right now. > > Renaming inclusiveIntersection() on your private chat suggestion. Actually renaming to inclusivelyIntersects
Daniel Bates
Comment 11 2020-06-25 15:00:04 PDT
Darin Adler
Comment 12 2020-06-25 15:00:30 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review Heh, just realized I never pushed publish. My comment is consistent with what the two of you did! > Source/WebCore/platform/graphics/FloatRect.h:165 > + WEBCORE_EXPORT bool intersectsEvenIfEmpty(const FloatRect&) const; Would be nice to find a more graceful name for this operation. I guess this is like uniteEvenIfEmpty. There have to be some better terms of art for this sort of thing since they come up in every single graphics library!
Daniel Bates
Comment 13 2020-06-25 15:01:48 PDT
Daniel Bates
Comment 14 2020-06-25 15:02:49 PDT
Daniel Bates
Comment 15 2020-06-25 15:03:28 PDT
Daniel Bates
Comment 16 2020-06-25 15:04:55 PDT
Comment on attachment 402674 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=402674&action=review >> Source/WebCore/platform/graphics/FloatRect.h:165 >> + WEBCORE_EXPORT bool intersectsEvenIfEmpty(const FloatRect&) const; > > Would be nice to find a more graceful name for this operation. I guess this is like uniteEvenIfEmpty. There have to be some better terms of art for this sort of thing since they come up in every single graphics library! I went with inclusivelyIntersects in the latest patch, just landed.
Note You need to log in before you can comment on or make changes to this bug.