From 1800c07f449658c1b649c8a8bdc0e48d0ceb93fe Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 17 Dec 2014 14:13:10 +0100 Subject: [PATCH] [IMP] summernote lib: save range each time the cuser mouseup or keyup in editable area and restore each time the user active an event. In this case the user can click on an other page area and then click on the option without any error --- .../static/lib/summernote/src/js/EventHandler.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/website/static/lib/summernote/src/js/EventHandler.js b/addons/website/static/lib/summernote/src/js/EventHandler.js index 2cb04fbe819..481581ad5ac 100644 --- a/addons/website/static/lib/summernote/src/js/EventHandler.js +++ b/addons/website/static/lib/summernote/src/js/EventHandler.js @@ -268,9 +268,7 @@ define([ setTimeout(function () { var layoutInfo = makeLayoutInfo(event.target); var $editable = layoutInfo.editable(); - if (!event.isDefaultPrevented()) { - editor.saveRange($editable); - } + editor.saveRange($editable); var styleInfo = editor.currentStyle(); if (!styleInfo) { return; } @@ -364,7 +362,6 @@ define([ } }; - var hToolbarAndPopoverClick = function (event) { var $btn = $(event.target).closest('[data-event]'); @@ -375,6 +372,9 @@ define([ var layoutInfo = makeLayoutInfo(event.target); + var $editable = layoutInfo.editable(); + editor.restoreRange($editable); + // before command: detect control selection element($target) var $target; if ($.inArray(eventName, ['resize', 'floatMe', 'removeMedia', 'imageShape']) !== -1) { @@ -391,7 +391,6 @@ define([ if ($.isFunction($.summernote.pluginEvents[eventName])) { $.summernote.pluginEvents[eventName](event, editor, layoutInfo, value); } else if (editor[eventName]) { // on command - var $editable = layoutInfo.editable(); $editable.trigger('focus'); editor[eventName]($editable, value, $target); event.preventDefault(); @@ -588,7 +587,10 @@ define([ (keycode > 185 && keycode < 193) || // ;=,-./` (in order) (keycode > 218 && keycode < 223))) { // [\]' (in order)) eventName = 'visible'; + } else if (!keycode) { + editor.restoreRange($editable); } + if (eventName) { if ($.summernote.pluginEvents[eventName]) { var plugin = $.summernote.pluginEvents[eventName]; @@ -602,6 +604,9 @@ define([ commands[eventName].call(this, layoutInfo); event.preventDefault(); } + if (keycode) { + editor.saveRange($editable); + } } else if (key.isEdit(event.keyCode)) { editor.afterCommand($editable); }