Code change:
} } <del> private _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void { </del> <ins> private _isMouseOverWidget(mouseEvent: IEditorMouseEvent): boolean { </ins> const target = mouseEvent.target; <del> if (this._contentWidget?.isFocused || this._contentWidget?.isResizing) { return; } if (this._isMouseDown && this._hoverClicked) { return; } if (this._isHoverSticky && target.type === MouseTargetType.CONTENT_WIDGET && target.detail === ContentHoverWidget.ID) { </del> <ins> if ( this._isHoverSticky && target.type === MouseTargetType.CONTENT_WIDGET && target.detail === ContentHoverWidget.ID ) { </ins> // mouse moved on top of content hover widget <del> return; </del> <ins> return true; </ins> } <del> if (this._isHoverSticky && this._contentWidget?.containsNode(mouseEvent.event.browserEvent.view?.document.activeElement) && !mouseEvent.event.browserEvent.view?.getSelection()?.isCollapsed) { </del> <ins> if ( this._isHoverSticky && this._contentWidget?.containsNode(mouseEvent.event.browserEvent.view?.document.activeElement) && !mouseEvent.event.browserEvent.view?.getSelection()?.isCollapsed ) { </ins> // selected text within content hover widget <del> return; </del> <ins> return true; </ins> } if ( <del> !this._isHoverSticky && target.type === MouseTargetType.CONTENT_WIDGET && target.detail === ContentHoverWidget.ID </del> <ins> !this._isHoverSticky && target.type === MouseTargetType.CONTENT_WIDGET && target.detail === ContentHoverWidget.ID </ins> && this._contentWidget?.isColorPickerVisible ) { // though the hover is not sticky, the color picker needs to. <del> return; </del> <ins> return true; </ins> } <del> if (this._isHoverSticky && target.type === MouseTargetType.OVERLAY_WIDGET && target.detail === MarginHoverWidget.ID) { </del> <ins> if (this._isHoverSticky && target.type === MouseTargetType.OVERLAY_WIDGET && target.detail === MarginHoverWidget.ID ) { </ins> // mouse moved on top of overlay hover widget <del> return; </del> <ins> return true; </ins> } <ins> return false; } private _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void { const target = mouseEvent.target; if (this._contentWidget?.isFocused || this._contentWidget?.isResizing) { return; } if (this._isMouseDown && this._hoverClicked) { return; } </ins> if (this._isHoverSticky && this._contentWidget?.isVisibleFromKeyboard) { // Sticky mode is on and the hover has been shown via keyboard // so moving the mouse has no effect return; } <ins> const mouseIsOverWidget = this._isMouseOverWidget(mouseEvent); if (mouseIsOverWidget) { if (this._hideWidgetsTimeout) { clearTimeout(this._hideWidgetsTimeout); this._hideWidgetsTimeout = undefined; } this._mouseWasOverWidget = mouseIsOverWidget; return; } if (this._hideWidgetsTimeout) { return; } </ins> const mouseOnDecorator = target.element?.classList.contains('colorpicker-color-decoration'); const decoratorActivatedOn = this._editor.getOption(EditorOption.colorDecoratorsActivatedOn);

Related discussion:
text: Currently the hover disappear as soon as the mouse leaves the content hover. Sometimes the user leaves briefly the content hover. The ask is to wait until some times (ex. 500 ms) has passed before measuring whether the mouse is within the hover or not, then make the hover disappear or not.
This would be quite helpful in resizing the hover (because it's easy to go out of the hover when aiming for the angle to hover with a mouse). But I would think 500 ms is too much for that use case