-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove focus event from RichText #44304
Conversation
Size Change: -29 B (0%) Total Size: 1.32 MB
ℹ️ View Unchanged
|
}; | ||
onSelectionChange( index, index ); | ||
} else { | ||
if ( isSelected ) { | ||
applyRecord( record.current ); | ||
onSelectionChange( record.current.start, record.current.end ); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It turns out, this is the only "useful" code here that doesn't duplicate selectionchange
event. It's useful when applying formats (like links), that way the selection is restored at the right position after inserting links. Maybe we could even move this code elsewhere (when we actually update record.current) and avoid the event handler entirely but I'm not familiar enough with this code to try it.
end: index, | ||
activeFormats: EMPTY_ACTIVE_FORMATS, | ||
}; | ||
onSelectionChange( index, index ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The main goal for my explorations on this PR is to get rid of this, which was causing onSelectionChange to be called twice on focus, I'm assuming it's already done in the "selectionchange" event.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's called twice, it will be called first here, then in the "selectionchange" event.
Check what this does to the "focus" metric. The reality is that the "focus" metric is not complete, we're only counting the "focus" event, while now "focus" doesn't do much but the re-rendering is moved to "focus-in".
I suspect that the current PR still improves the "block selection" metric but our current metric is not representative. |
Is this just for performance? |
yes, this is my main motivation #44304 (comment) |
// frame. The event listener for selection changes may be added too late | ||
// at this point, but this focus event is still too early to calculate | ||
// the selection. | ||
rafId = defaultView.requestAnimationFrame( handleSelectionChange ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we first try to remove it without removing this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not clear to me why we need this since when "focus" happens, the selection changes so the callback is called no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm just curious which of these changes makes which tests fail, so we can address it more easily.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm just curious which of these changes makes which tests fail, so we can address it more easily.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm just curious which of these changes makes which tests fail, so we can address it more easily.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like everything passes now that I restored that part
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd say let's look into that separately then.
11a7c7e
to
a136a6b
Compare
I updated the way we compute the "focus" metric, that way we will have better results in the future. It now includes "focus", "focusin", "focusout" and "selectionchange" events. |
a136a6b
to
d89fb70
Compare
d89fb70
to
ba8f297
Compare
Changes similar to this PR have been merged already. |
Just trying to understand the purpose of this event listener and if there's any impact.