mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-09-05 04:04:38 +08:00
fix(composer): don't show tooltip until double-click & drag is done
Test Plan: edgehill --test Reviewers: bengotow Reviewed By: bengotow Differential Revision: https://review.inboxapp.com/D1334
This commit is contained in:
parent
0669468ec0
commit
25792f0c90
2 changed files with 24 additions and 4 deletions
|
@ -31,6 +31,8 @@ ContenteditableComponent = React.createClass
|
||||||
@_setupLinkHoverListeners()
|
@_setupLinkHoverListeners()
|
||||||
@_setupGlobalMouseListener()
|
@_setupGlobalMouseListener()
|
||||||
|
|
||||||
|
@_refreshToolbarState = _.debounce(@__refreshToolbarState, 100)
|
||||||
|
|
||||||
@_disposable = atom.commands.add '.contenteditable-container *', {
|
@_disposable = atom.commands.add '.contenteditable-container *', {
|
||||||
'core:focus-next': (event) =>
|
'core:focus-next': (event) =>
|
||||||
editableNode = @_editableNode()
|
editableNode = @_editableNode()
|
||||||
|
@ -259,6 +261,20 @@ ContenteditableComponent = React.createClass
|
||||||
@_mouseHasMoved = false
|
@_mouseHasMoved = false
|
||||||
window.addEventListener("mousemove", @__onMouseMove)
|
window.addEventListener("mousemove", @__onMouseMove)
|
||||||
|
|
||||||
|
# We can't use the native double click event because that only fires
|
||||||
|
# on the second up-stroke
|
||||||
|
if Date.now() - (@_lastMouseDown ? 0) < 250
|
||||||
|
@_onDoubleDown(event)
|
||||||
|
@_lastMouseDown = 0 # to prevent triple down
|
||||||
|
else
|
||||||
|
@_lastMouseDown = Date.now()
|
||||||
|
|
||||||
|
_onDoubleDown: (event) ->
|
||||||
|
return unless @isMounted()
|
||||||
|
editable = @refs.contenteditable.getDOMNode()
|
||||||
|
if editable is event.target or editable.contains(event.target)
|
||||||
|
@_doubleDown = true
|
||||||
|
|
||||||
_onMouseMove: (event) ->
|
_onMouseMove: (event) ->
|
||||||
if not @_mouseHasMoved
|
if not @_mouseHasMoved
|
||||||
@_onDragStart(@_mouseDownEvent)
|
@_onDragStart(@_mouseDownEvent)
|
||||||
|
@ -267,6 +283,10 @@ ContenteditableComponent = React.createClass
|
||||||
_onMouseUp: (event) ->
|
_onMouseUp: (event) ->
|
||||||
window.removeEventListener("mousemove", @__onMouseMove)
|
window.removeEventListener("mousemove", @__onMouseMove)
|
||||||
|
|
||||||
|
if @_doubleDown
|
||||||
|
@_doubleDown = false
|
||||||
|
@_refreshToolbarState()
|
||||||
|
|
||||||
if @_mouseHasMoved
|
if @_mouseHasMoved
|
||||||
@_mouseHasMoved = false
|
@_mouseHasMoved = false
|
||||||
@_onDragEnd(event)
|
@_onDragEnd(event)
|
||||||
|
@ -282,7 +302,7 @@ ContenteditableComponent = React.createClass
|
||||||
extension.onMouseUp(editableNode, range, event) if extension.onMouseUp
|
extension.onMouseUp(editableNode, range, event) if extension.onMouseUp
|
||||||
catch e
|
catch e
|
||||||
console.log('DraftStore extension raised an error: '+e.toString())
|
console.log('DraftStore extension raised an error: '+e.toString())
|
||||||
|
|
||||||
event
|
event
|
||||||
|
|
||||||
_onDragStart: (event) ->
|
_onDragStart: (event) ->
|
||||||
|
@ -427,8 +447,9 @@ ContenteditableComponent = React.createClass
|
||||||
# 1. When you're hovering over a link
|
# 1. When you're hovering over a link
|
||||||
# 2. When you've arrow-keyed the cursor into a link
|
# 2. When you've arrow-keyed the cursor into a link
|
||||||
# 3. When you have selected a range of text.
|
# 3. When you have selected a range of text.
|
||||||
_refreshToolbarState: ->
|
__refreshToolbarState: ->
|
||||||
return if @_dragging
|
return unless @isMounted()
|
||||||
|
return if @_dragging or (@_doubleDown and not @state.toolbarVisible)
|
||||||
if @_linkHoveringOver
|
if @_linkHoveringOver
|
||||||
url = @_linkHoveringOver.getAttribute('href')
|
url = @_linkHoveringOver.getAttribute('href')
|
||||||
rect = @_linkHoveringOver.getBoundingClientRect()
|
rect = @_linkHoveringOver.getBoundingClientRect()
|
||||||
|
|
|
@ -324,7 +324,6 @@ body.is-blurred .composer-inner-wrap .tokenizing-field .token {
|
||||||
color: @text-color;
|
color: @text-color;
|
||||||
|
|
||||||
transition-duration: .15s;
|
transition-duration: .15s;
|
||||||
// transition-delay: .1s;
|
|
||||||
transition-property: opacity, margin;
|
transition-property: opacity, margin;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
|
|
Loading…
Add table
Reference in a new issue