From 847aca4859567aaa88e19d41139d236102bc2024 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sat, 31 Jan 2015 14:25:47 +0000 Subject: Visual/edit modes: exit visual mode on click in input element. --- content_scripts/mode_visual_edit.coffee | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'content_scripts') diff --git a/content_scripts/mode_visual_edit.coffee b/content_scripts/mode_visual_edit.coffee index a170a2da..00c842ed 100644 --- a/content_scripts/mode_visual_edit.coffee +++ b/content_scripts/mode_visual_edit.coffee @@ -449,15 +449,20 @@ class VisualMode extends Movement @changeMode CaretMode return - # Yank on . @push - _name: "#{@id}/enter" + _name: "#{@id}/enter/click" + # Yank on . keypress: (event) => if event.keyCode == keyCodes.enter unless event.metaKey or event.ctrlKey or event.altKey or event.shiftKey @yank() return @suppressEvent @continueBubbling + # Click in a focusable element exits. + click: (event) => + @alwaysContinueBubbling => + unless @options.parentMode + @exit event, event.target if DomUtils.isFocusable event.target # Visual-mode commands. unless @options.oneMovementOnly @@ -494,7 +499,7 @@ class VisualMode extends Movement # Don't leave the user in insert mode just because they happen to have selected text within an input # element. if document.activeElement and DomUtils.isEditable document.activeElement - document.activeElement.blur() + document.activeElement.blur() unless event?.type == "click" super event, target if @yankedText? @@ -554,6 +559,13 @@ class CaretMode extends Movement @selection.modify "extend", forward, character @scrollIntoView() + @push + _name: "#{@id}/click" + # Click in a focusable element exits. + click: (event) => + @alwaysContinueBubbling => + @exit event, event.target if DomUtils.isFocusable event.target + extend @commands, v: -> @changeMode VisualMode V: -> @changeMode VisualLineMode -- cgit v1.2.3