From 92d1b7559b901b16641ecaff01c34d68d0fa0614 Mon Sep 17 00:00:00 2001 From: Lee Sing Jie Date: Tue, 29 Nov 2011 21:25:25 +0800 Subject: [PATCH] Fix contextMenu when editor require scrolling When editor is not at the top of the page (requires scrolling), textarea right-click context menu will fail to appear. Use clientX and clientY which returns the relative coordinates instead of pageX and pageY. --- lib/ace/mouse/default_handlers.js | 2 +- lib/ace/mouse/mouse_event.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ace/mouse/default_handlers.js b/lib/ace/mouse/default_handlers.js index a574e46a..db5800ad 100644 --- a/lib/ace/mouse/default_handlers.js +++ b/lib/ace/mouse/default_handlers.js @@ -96,7 +96,7 @@ function DefaultHandlers(editor) { editor.moveCursorToPosition(pos); } if(button == 2) { - editor.textInput.onContextMenu({x: pageX, y: pageY}, selectionEmpty); + editor.textInput.onContextMenu({x: ev.clientX, y: ev.clientY}, selectionEmpty); event.capture(editor.container, function(){}, editor.textInput.onContextMenuClose); } return; diff --git a/lib/ace/mouse/mouse_event.js b/lib/ace/mouse/mouse_event.js index b8ffcf5c..63e3998d 100644 --- a/lib/ace/mouse/mouse_event.js +++ b/lib/ace/mouse/mouse_event.js @@ -51,6 +51,9 @@ var MouseEvent = exports.MouseEvent = function(domEvent, editor) { this.pageX = event.getDocumentX(domEvent); this.pageY = event.getDocumentY(domEvent); + this.clientX = domEvent.clientX; + this.clientY = domEvent.clientY; + this.$pos = null; this.$inSelection = null; @@ -130,4 +133,4 @@ var MouseEvent = exports.MouseEvent = function(domEvent, editor) { }).call(MouseEvent.prototype); -}); \ No newline at end of file +});