From ad2d31eef43d9f0038c694b7ebf936d3450cd44a Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Sun, 27 Oct 2013 20:51:15 +1100 Subject: [PATCH 1/2] Fix Webkit context menu on second click --- lib/ace/keyboard/textinput.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ace/keyboard/textinput.js b/lib/ace/keyboard/textinput.js index ef1aba4f..ee09b209 100644 --- a/lib/ace/keyboard/textinput.js +++ b/lib/ace/keyboard/textinput.js @@ -490,10 +490,12 @@ var TextInput = function(parentNode, host) { // firefox fires contextmenu event after opening it if (!useragent.isGecko || useragent.isMac) { - event.addListener(text, "contextmenu", function(e) { + var onContextMenu = function(e) { host.textInput.onContextMenu(e); onContextMenuClose(); - }); + }; + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); + event.addListener(text, "contextmenu", onContextMenu); } }; From 07e4eb0a3a019fc3f4ac37d144530111a452d78f Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 27 Oct 2013 14:33:55 +0400 Subject: [PATCH 2/2] use scroller instead of content because other widgets inheriting from ace do not have renderer.content --- lib/ace/mouse/default_handlers.js | 8 ++++---- lib/ace/test/mockrenderer.js | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/ace/mouse/default_handlers.js b/lib/ace/mouse/default_handlers.js index d0c795d1..ebe9e0c7 100644 --- a/lib/ace/mouse/default_handlers.js +++ b/lib/ace/mouse/default_handlers.js @@ -118,8 +118,8 @@ function DefaultHandlers(mouseHandler) { editor.selection.clearSelection(); } }.bind(this), 0); - if (editor.renderer.content.setCapture) { - editor.renderer.content.setCapture(); + if (editor.renderer.scroller.setCapture) { + editor.renderer.scroller.setCapture(); } editor.setStyle("ace_selecting"); this.setState("select"); @@ -185,8 +185,8 @@ function DefaultHandlers(mouseHandler) { this.selectByWordsEnd = this.selectByLinesEnd = function() { this.editor.unsetStyle("ace_selecting"); - if (this.editor.renderer.content.releaseCapture) { - this.editor.renderer.content.releaseCapture(); + if (this.editor.renderer.scroller.releaseCapture) { + this.editor.renderer.scroller.releaseCapture(); } }; diff --git a/lib/ace/test/mockrenderer.js b/lib/ace/test/mockrenderer.js index e22104a7..73992111 100644 --- a/lib/ace/test/mockrenderer.js +++ b/lib/ace/test/mockrenderer.js @@ -33,6 +33,7 @@ define(function(require, exports, module) { var MockRenderer = exports.MockRenderer = function(visibleRowCount) { this.container = document.createElement("div"); + this.scroller = document.createElement("div"); this.visibleRowCount = visibleRowCount || 20; this.layerConfig = {