From b5a1aaebbac57d145d47e3d4dc74e96b39bb0443 Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Mon, 12 May 2014 17:35:41 +0100 Subject: [PATCH 1/7] change mouse cursor when over a selection Change mouse cursor to a pointer when hovered over a selection --- lib/ace/virtual_renderer.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 33f3a906..030cf5e0 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -88,6 +88,18 @@ var VirtualRenderer = function(container, theme) { this.content = dom.createElement("div"); this.content.className = "ace_content"; + + this.content.addEventListener('mousemove', function(e){ + var char = _self.pixelToScreenCoordinates(e.pageX, e.pageY); + var range = _self.session.selection.getRange(); + + if( !range.isEmpty() && range.contains(char.row, char.column) ){ + _self.content.style.cursor = "default"; + }else{ + _self.content.style.cursor = "text"; + } + }); + this.scroller.appendChild(this.content); this.$gutterLayer = new GutterLayer(this.$gutter); From 449226dac92be22b9867da75aa4f32da8907a492 Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Wed, 14 May 2014 10:27:37 +0100 Subject: [PATCH 2/7] Revert "change mouse cursor when over a selection" This reverts commit b5a1aaebbac57d145d47e3d4dc74e96b39bb0443. --- lib/ace/virtual_renderer.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 030cf5e0..33f3a906 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -88,18 +88,6 @@ var VirtualRenderer = function(container, theme) { this.content = dom.createElement("div"); this.content.className = "ace_content"; - - this.content.addEventListener('mousemove', function(e){ - var char = _self.pixelToScreenCoordinates(e.pageX, e.pageY); - var range = _self.session.selection.getRange(); - - if( !range.isEmpty() && range.contains(char.row, char.column) ){ - _self.content.style.cursor = "default"; - }else{ - _self.content.style.cursor = "text"; - } - }); - this.scroller.appendChild(this.content); this.$gutterLayer = new GutterLayer(this.$gutter); From 23680b4f7ed62144076f11e7421296904e78c3ce Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Wed, 14 May 2014 10:30:31 +0100 Subject: [PATCH 3/7] change mouse cursor when over selection moved to mouse handler. don't change when dragging or selecting. --- lib/ace/css/editor.css | 4 ++++ lib/ace/mouse/mouse_handler.js | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index a2b7475e..faa678cc 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -50,6 +50,10 @@ cursor: text !important; } +.ace_selection .ace_content { + cursor: default; +} + .ace_gutter { position: absolute; overflow : hidden; diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index c7573e94..41521120 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -74,6 +74,17 @@ var MouseHandler = function(editor) { editor.focus(); return event.preventDefault(e); }); + + editor.on('mousemove', function(e){ + var char = editor.renderer.pixelToScreenCoordinates(e.x, e.y); + var range = editor.session.selection.getRange(); + + if( !range.isEmpty() && range.contains(char.row, char.column) ){ + editor.setStyle("ace_selection"); + }else{ + editor.unsetStyle("ace_selection"); + } + }); }; (function() { From 8dffbbe200be7a8d871d3b8d72dab8a882875f78 Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Wed, 14 May 2014 14:56:57 +0100 Subject: [PATCH 4/7] selection hover improvements fix issue with wrapped lines and compute only when necessary. --- lib/ace/mouse/mouse_handler.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index 41521120..e3b45abf 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -40,6 +40,7 @@ var DragdropHandler = require("./dragdrop_handler").DragdropHandler; var config = require("../config"); var MouseHandler = function(editor) { + var _self = this; this.editor = editor; new DefaultHandlers(this); @@ -76,12 +77,15 @@ var MouseHandler = function(editor) { }); editor.on('mousemove', function(e){ - var char = editor.renderer.pixelToScreenCoordinates(e.x, e.y); + if (_self.state) + return; + + var char = editor.renderer.screenToTextCoordinates(e.x, e.y); var range = editor.session.selection.getRange(); - if( !range.isEmpty() && range.contains(char.row, char.column) ){ + if (!range.isEmpty() && range.inside(char.row, char.column)) { editor.setStyle("ace_selection"); - }else{ + } else { editor.unsetStyle("ace_selection"); } }); From 39fd0e6c42f35a2c123e241a1f553cf2f916da22 Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Wed, 14 May 2014 15:08:40 +0100 Subject: [PATCH 5/7] fix mouse not always changing on first line --- lib/ace/mouse/mouse_handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index e3b45abf..6a91b172 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -83,7 +83,7 @@ var MouseHandler = function(editor) { var char = editor.renderer.screenToTextCoordinates(e.x, e.y); var range = editor.session.selection.getRange(); - if (!range.isEmpty() && range.inside(char.row, char.column)) { + if (!range.isEmpty() && range.insideStart(char.row, char.column)) { editor.setStyle("ace_selection"); } else { editor.unsetStyle("ace_selection"); From c0343a2cbaef639200b479997f6805ba55cc63aa Mon Sep 17 00:00:00 2001 From: Adam Jimenez Date: Fri, 6 Jun 2014 13:50:29 +0100 Subject: [PATCH 6/7] use setCursorStyle instead of modifying classes --- lib/ace/css/editor.css | 4 ---- lib/ace/mouse/mouse_handler.js | 7 ++++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index faa678cc..a2b7475e 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -50,10 +50,6 @@ cursor: text !important; } -.ace_selection .ace_content { - cursor: default; -} - .ace_gutter { position: absolute; overflow : hidden; diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index 6a91b172..f755270c 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -82,11 +82,12 @@ var MouseHandler = function(editor) { var char = editor.renderer.screenToTextCoordinates(e.x, e.y); var range = editor.session.selection.getRange(); - + var renderer = editor.renderer; + if (!range.isEmpty() && range.insideStart(char.row, char.column)) { - editor.setStyle("ace_selection"); + renderer.setCursorStyle("default"); } else { - editor.unsetStyle("ace_selection"); + renderer.setCursorStyle(""); } }); }; From 636cc6a96f9ca20fd678a3830a3aa43fc27283a5 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 7 Jun 2014 15:10:36 +0400 Subject: [PATCH 7/7] do not change mouse over selection if dragging isn't enabled --- lib/ace/mouse/mouse_handler.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index f755270c..2da72d31 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -76,14 +76,14 @@ var MouseHandler = function(editor) { return event.preventDefault(e); }); - editor.on('mousemove', function(e){ - if (_self.state) + editor.on("mousemove", function(e){ + if (_self.state || _self.$dragDelay || !_self.$dragEnabled) return; var char = editor.renderer.screenToTextCoordinates(e.x, e.y); var range = editor.session.selection.getRange(); - var renderer = editor.renderer; - + var renderer = editor.renderer; + if (!range.isEmpty() && range.insideStart(char.row, char.column)) { renderer.setCursorStyle("default"); } else {