From c2c650db1cd1db06126bbd9faa2b894f64e9be2f Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Tue, 2 Oct 2012 03:36:42 +1000 Subject: [PATCH 1/7] Simplify update method of cursor layer --- lib/ace/layer/cursor.js | 58 +++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index 9d688b57..db208f3d 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -141,57 +141,47 @@ var Cursor = function(parentEl) { this.update = function(config) { this.config = config; - if (this.session.selectionMarkerCount > 0) { - var selections = this.session.$selectionMarkers; - var i = 0, sel, cursorIndex = 0; + var selections = this.session.$selectionMarkers; + var i = 0, cursorIndex = 0; - for (var i = selections.length; i--; ) { - sel = selections[i]; - var pixelPos = this.getPixelPosition(sel.cursor, true); - if ((pixelPos.top > config.height + config.offset || - pixelPos.top < -config.offset) && i > 1) { - continue; - } + if (selections === undefined || selections.length === 0){ + selections = [{cursor: null}]; + } - var style = (this.cursors[cursorIndex++] || this.addCursor()).style; - - style.left = pixelPos.left + "px"; - style.top = pixelPos.top + "px"; - style.width = config.characterWidth + "px"; - style.height = config.lineHeight + "px"; + for (var i = selections.length; i--; ) { + var pixelPos = this.getPixelPosition(selections[i].cursor, true); + if ((pixelPos.top > config.height + config.offset || + pixelPos.top < -config.offset) && i > 1) { + continue; } - if (cursorIndex > 1) - while (this.cursors.length > cursorIndex) - this.removeCursor(); - } else { - var pixelPos = this.getPixelPosition(null, true); - var style = this.cursor.style; + + var style = (this.cursors[cursorIndex++] || this.addCursor()).style; + style.left = pixelPos.left + "px"; style.top = pixelPos.top + "px"; style.width = config.characterWidth + "px"; style.height = config.lineHeight + "px"; - - while (this.cursors.length > 1) - this.removeCursor(); } + while (this.cursors.length > cursorIndex) + this.removeCursor(); var overwrite = this.session.getOverwrite(); - if (overwrite != this.overwrite) - this.$setOverwrite(overwrite); + this.$setOverwrite(overwrite); // cache for textarea and gutter highlight this.$pixelPos = pixelPos; - this.restartTimer(); }; this.$setOverwrite = function(overwrite) { - this.overwrite = overwrite; - for (var i = this.cursors.length; i--; ) { - if (overwrite) - dom.addCssClass(this.cursors[i], "ace_overwrite"); - else - dom.removeCssClass(this.cursors[i], "ace_overwrite"); + if (overwrite != this.overwrite) { + this.overwrite = overwrite; + for (var i = this.cursors.length; i--; ) { + if (overwrite) + dom.addCssClass(this.cursors[i], "ace_overwrite"); + else + dom.removeCssClass(this.cursors[i], "ace_overwrite"); + } } }; From 4a38512616dbf69982c1393eff2166f990d0ec85 Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Tue, 2 Oct 2012 03:51:24 +1000 Subject: [PATCH 2/7] Rename restartTimer to resetTimer in cursor, refactor this method --- lib/ace/layer/cursor.js | 49 ++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index db208f3d..694ab2a5 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -58,8 +58,7 @@ var Cursor = function(parentEl) { this.setBlinking = function(blinking) { this.isBlinking = blinking; - if (blinking) - this.restartTimer(); + this.resetTimer(); }; this.addCursor = function() { @@ -88,32 +87,41 @@ var Cursor = function(parentEl) { this.isVisible = false; for (var i = this.cursors.length; i--; ) dom.addCssClass(this.cursors[i], "ace_hidden"); - clearInterval(this.blinkId); + this.resetTimer(); }; this.showCursor = function() { this.isVisible = true; for (var i = this.cursors.length; i--; ) dom.removeCssClass(this.cursors[i], "ace_hidden"); - - this.element.style.visibility = ""; - this.restartTimer(); + this.resetTimer(); }; - this.restartTimer = function() { - clearInterval(this.blinkId); - if (!this.isBlinking) - return; - if (!this.isVisible) + this.resetTimer = function() { + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + for (var i = this.cursors.length; i--; ) + this.cursors[i].style.visibility = ""; + + if (!this.isBlinking || !this.isVisible) return; - var element = this.cursors.length == 1 ? this.cursor : this.element; - this.blinkId = setInterval(function() { - element.style.visibility = "hidden"; - setTimeout(function() { - element.style.visibility = ""; - }, 400); - }, 1000); + var blink = function(){ + this.timeoutId = setTimeout(function() { + for (var i = this.cursors.length; i--; ) { + this.cursors[i].style.visibility = "hidden"; + } + }.bind(this), 0.6 * 1000); + }.bind(this); + + this.intervalId = setInterval(function() { + for (var i = this.cursors.length; i--; ) { + this.cursors[i].style.visibility = ""; + } + blink(); + }.bind(this), 1000); + + blink(); }; this.getPixelPosition = function(position, onScreen) { @@ -170,7 +178,7 @@ var Cursor = function(parentEl) { // cache for textarea and gutter highlight this.$pixelPos = pixelPos; - this.restartTimer(); + this.resetTimer(); }; this.$setOverwrite = function(overwrite) { @@ -186,7 +194,8 @@ var Cursor = function(parentEl) { }; this.destroy = function() { - clearInterval(this.blinkId); + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); } }).call(Cursor.prototype); From aa9962aafd246b0652f77276f147eaa5dd830b04 Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Tue, 2 Oct 2012 03:58:34 +1000 Subject: [PATCH 3/7] Add blinkInterval option to cursor --- lib/ace/layer/cursor.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index 694ab2a5..710958b8 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -40,6 +40,7 @@ var Cursor = function(parentEl) { this.isVisible = false; this.isBlinking = true; + this.blinkInterval = 1000; this.cursors = []; this.cursor = this.addCursor(); @@ -57,8 +58,17 @@ var Cursor = function(parentEl) { }; this.setBlinking = function(blinking) { - this.isBlinking = blinking; - this.resetTimer(); + if (blinking != this.isBlinking){ + this.isBlinking = blinking; + this.resetTimer(); + } + }; + + this.setBlinkInterval = function(blinkInterval) { + if (blinkInterval != this.blinkInterval){ + this.blinkInterval = blinkInterval; + this.resetTimer(); + } }; this.addCursor = function() { @@ -103,7 +113,7 @@ var Cursor = function(parentEl) { for (var i = this.cursors.length; i--; ) this.cursors[i].style.visibility = ""; - if (!this.isBlinking || !this.isVisible) + if (!this.isBlinking || !this.blinkInterval || !this.isVisible) return; var blink = function(){ @@ -111,7 +121,7 @@ var Cursor = function(parentEl) { for (var i = this.cursors.length; i--; ) { this.cursors[i].style.visibility = "hidden"; } - }.bind(this), 0.6 * 1000); + }.bind(this), 0.6 * this.blinkInterval); }.bind(this); this.intervalId = setInterval(function() { @@ -119,7 +129,7 @@ var Cursor = function(parentEl) { this.cursors[i].style.visibility = ""; } blink(); - }.bind(this), 1000); + }.bind(this), this.blinkInterval); blink(); }; @@ -196,7 +206,7 @@ var Cursor = function(parentEl) { this.destroy = function() { clearInterval(this.intervalId); clearTimeout(this.timeoutId); - } + }; }).call(Cursor.prototype); From 1557004dfacc0680569d52e855cec40220461965 Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Tue, 2 Oct 2012 04:11:56 +1000 Subject: [PATCH 4/7] Add smoothBlinking option to cursor --- lib/ace/css/editor.css | 12 ++++++++++++ lib/ace/layer/cursor.js | 25 ++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index c3a7fc8e..2603efcd 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -152,6 +152,18 @@ opacity: 0.2; } +.ace_smooth-blinking .ace_cursor { + -moz-transition: opacity 0.18s; + -webkit-transition: opacity 0.18s; + -o-transition: opacity 0.18s; + -ms-transition: opacity 0.18s; + transition: opacity 0.18s; +} + +.ace_cursor[style*="opacity: 0"]{ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; +} + .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index 710958b8..8bcc5423 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -41,6 +41,7 @@ var Cursor = function(parentEl) { this.isVisible = false; this.isBlinking = true; this.blinkInterval = 1000; + this.smoothBlinking = false; this.cursors = []; this.cursor = this.addCursor(); @@ -71,6 +72,17 @@ var Cursor = function(parentEl) { } }; + this.setSmoothBlinking = function(smoothBlinking) { + if (smoothBlinking != this.smoothBlinking) { + this.smoothBlinking = smoothBlinking; + if (smoothBlinking) + dom.addCssClass(this.element, "ace_smooth-blinking"); + else + dom.removeCssClass(this.element, "ace_smooth-blinking"); + this.resetTimer(); + } + }; + this.addCursor = function() { var el = dom.createElement("div"); var className = "ace_cursor"; @@ -110,23 +122,30 @@ var Cursor = function(parentEl) { this.resetTimer = function() { clearInterval(this.intervalId); clearTimeout(this.timeoutId); + if (this.smoothBlinking) + dom.removeCssClass(this.element, "ace_smooth-blinking"); for (var i = this.cursors.length; i--; ) - this.cursors[i].style.visibility = ""; + this.cursors[i].style.opacity = ""; if (!this.isBlinking || !this.blinkInterval || !this.isVisible) return; + if (this.smoothBlinking) + setTimeout(function(){ + dom.addCssClass(this.element, "ace_smooth-blinking"); + }.bind(this)); + var blink = function(){ this.timeoutId = setTimeout(function() { for (var i = this.cursors.length; i--; ) { - this.cursors[i].style.visibility = "hidden"; + this.cursors[i].style.opacity = 0; } }.bind(this), 0.6 * this.blinkInterval); }.bind(this); this.intervalId = setInterval(function() { for (var i = this.cursors.length; i--; ) { - this.cursors[i].style.visibility = ""; + this.cursors[i].style.opacity = ""; } blink(); }.bind(this), this.blinkInterval); From 73f68abfc124531bda1806b3eb1cda57e66de4f1 Mon Sep 17 00:00:00 2001 From: DanyaPostfactum Date: Tue, 2 Oct 2012 05:01:23 +1000 Subject: [PATCH 5/7] Retarget css-class changing from each cursor to whole cursor layer --- lib/ace/css/editor.css | 2 +- lib/ace/keyboard/emacs.js | 2 +- lib/ace/layer/cursor.js | 24 +++++++---------------- lib/ace/theme/ambiance.css | 2 +- lib/ace/theme/chrome.css | 2 +- lib/ace/theme/clouds.css | 2 +- lib/ace/theme/clouds_midnight.css | 2 +- lib/ace/theme/cobalt.css | 2 +- lib/ace/theme/crimson_editor.css | 2 +- lib/ace/theme/dawn.css | 2 +- lib/ace/theme/dreamweaver.css | 2 +- lib/ace/theme/github.css | 2 +- lib/ace/theme/idle_fingers.css | 2 +- lib/ace/theme/kr_theme.css | 2 +- lib/ace/theme/merbivore.css | 2 +- lib/ace/theme/merbivore_soft.css | 2 +- lib/ace/theme/mono_industrial.css | 4 ++-- lib/ace/theme/monokai.css | 2 +- lib/ace/theme/pastel_on_dark.css | 2 +- lib/ace/theme/solarized_dark.css | 2 +- lib/ace/theme/solarized_light.css | 2 +- lib/ace/theme/textmate.css | 2 +- lib/ace/theme/tomorrow.css | 2 +- lib/ace/theme/tomorrow_night.css | 2 +- lib/ace/theme/tomorrow_night_blue.css | 2 +- lib/ace/theme/tomorrow_night_bright.css | 2 +- lib/ace/theme/tomorrow_night_eighties.css | 2 +- lib/ace/theme/twilight.css | 2 +- lib/ace/theme/vibrant_ink.css | 2 +- lib/ace/theme/xcode.css | 2 +- tool/Theme.tmpl.css | 2 +- 31 files changed, 38 insertions(+), 48 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index 2603efcd..07da6796 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -148,7 +148,7 @@ box-sizing: border-box; } -.ace_cursor.ace_hidden { +.ace_hidden-cursors .ace_cursor { opacity: 0.2; } diff --git a/lib/ace/keyboard/emacs.js b/lib/ace/keyboard/emacs.js index a1248759..8fc3aeeb 100644 --- a/lib/ace/keyboard/emacs.js +++ b/lib/ace/keyboard/emacs.js @@ -66,7 +66,7 @@ exports.handler.attach = function(editor) { opacity: 1;\ background-color: transparent;\ }\ - .emacs-mode .ace_cursor.ace_overwrite {\ + .emacs-mode .ace_overwrite-cursors .ace_cursor {\ opacity: 1;\ background-color: transparent;\ border-width: 0 0 2px 2px !important;\ diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index 8bcc5423..d42b1d28 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -85,13 +85,7 @@ var Cursor = function(parentEl) { this.addCursor = function() { var el = dom.createElement("div"); - var className = "ace_cursor"; - if (!this.isVisible) - className += " ace_hidden"; - if (this.overwrite) - className += " ace_overwrite"; - - el.className = className; + el.className = "ace_cursor"; this.element.appendChild(el); this.cursors.push(el); return el; @@ -107,15 +101,13 @@ var Cursor = function(parentEl) { this.hideCursor = function() { this.isVisible = false; - for (var i = this.cursors.length; i--; ) - dom.addCssClass(this.cursors[i], "ace_hidden"); + dom.addCssClass(this.element, "ace_hidden-cursors"); this.resetTimer(); }; this.showCursor = function() { this.isVisible = true; - for (var i = this.cursors.length; i--; ) - dom.removeCssClass(this.cursors[i], "ace_hidden"); + dom.removeCssClass(this.element, "ace_hidden-cursors"); this.resetTimer(); }; @@ -213,12 +205,10 @@ var Cursor = function(parentEl) { this.$setOverwrite = function(overwrite) { if (overwrite != this.overwrite) { this.overwrite = overwrite; - for (var i = this.cursors.length; i--; ) { - if (overwrite) - dom.addCssClass(this.cursors[i], "ace_overwrite"); - else - dom.removeCssClass(this.cursors[i], "ace_overwrite"); - } + if (overwrite) + dom.addCssClass(this.element, "ace_overwrite-cursors"); + else + dom.removeCssClass(this.element, "ace_overwrite-cursors"); } }; diff --git a/lib/ace/theme/ambiance.css b/lib/ace/theme/ambiance.css index 65a25bbd..524ad03a 100644 --- a/lib/ace/theme/ambiance.css +++ b/lib/ace/theme/ambiance.css @@ -66,7 +66,7 @@ border-left: 1px solid #7991E8; } -.ace-ambiance .ace_cursor.ace_overwrite { +.ace-ambiance .ace_overwrite-cursors .ace_cursor { border: 1px solid #FFE300; background: #766B13; } diff --git a/lib/ace/theme/chrome.css b/lib/ace/theme/chrome.css index 8e166a90..773c213c 100644 --- a/lib/ace/theme/chrome.css +++ b/lib/ace/theme/chrome.css @@ -17,7 +17,7 @@ border-left: 2px solid black; } -.ace-chrome .ace_cursor.ace_overwrite { +.ace-chrome .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid black; } diff --git a/lib/ace/theme/clouds.css b/lib/ace/theme/clouds.css index 1f64a7cd..4ff7e7c2 100644 --- a/lib/ace/theme/clouds.css +++ b/lib/ace/theme/clouds.css @@ -20,7 +20,7 @@ border-left: 2px solid #000000 } -.ace-clouds .ace_cursor.ace_overwrite { +.ace-clouds .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } diff --git a/lib/ace/theme/clouds_midnight.css b/lib/ace/theme/clouds_midnight.css index 632dc4e5..6bc319d1 100644 --- a/lib/ace/theme/clouds_midnight.css +++ b/lib/ace/theme/clouds_midnight.css @@ -20,7 +20,7 @@ border-left: 2px solid #7DA5DC } -.ace-clouds-midnight .ace_cursor.ace_overwrite { +.ace-clouds-midnight .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #7DA5DC } diff --git a/lib/ace/theme/cobalt.css b/lib/ace/theme/cobalt.css index 3c8d61f9..3717ba64 100644 --- a/lib/ace/theme/cobalt.css +++ b/lib/ace/theme/cobalt.css @@ -20,7 +20,7 @@ border-left: 2px solid #FFFFFF } -.ace-cobalt .ace_cursor.ace_overwrite { +.ace-cobalt .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } diff --git a/lib/ace/theme/crimson_editor.css b/lib/ace/theme/crimson_editor.css index f8032fa4..2d4a0eef 100644 --- a/lib/ace/theme/crimson_editor.css +++ b/lib/ace/theme/crimson_editor.css @@ -26,7 +26,7 @@ border-left: 2px solid black; } -.ace-crimson-editor .ace_cursor.ace_overwrite { +.ace-crimson-editor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid black; } diff --git a/lib/ace/theme/dawn.css b/lib/ace/theme/dawn.css index fcfd5e89..ca544fea 100644 --- a/lib/ace/theme/dawn.css +++ b/lib/ace/theme/dawn.css @@ -20,7 +20,7 @@ border-left: 2px solid #000000 } -.ace-dawn .ace_cursor.ace_overwrite { +.ace-dawn .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } diff --git a/lib/ace/theme/dreamweaver.css b/lib/ace/theme/dreamweaver.css index 04983385..30f77cbf 100644 --- a/lib/ace/theme/dreamweaver.css +++ b/lib/ace/theme/dreamweaver.css @@ -23,7 +23,7 @@ border-left: 2px solid black; } -.ace-dreamweaver .ace_cursor.ace_overwrite { +.ace-dreamweaver .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid black; } diff --git a/lib/ace/theme/github.css b/lib/ace/theme/github.css index 12ffa256..5b059727 100644 --- a/lib/ace/theme/github.css +++ b/lib/ace/theme/github.css @@ -70,7 +70,7 @@ border-left: 2px solid black; } -.ace-github .ace_cursor.ace_overwrite { +.ace-github .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid black; } diff --git a/lib/ace/theme/idle_fingers.css b/lib/ace/theme/idle_fingers.css index 1b735dff..43eff698 100644 --- a/lib/ace/theme/idle_fingers.css +++ b/lib/ace/theme/idle_fingers.css @@ -20,7 +20,7 @@ border-left: 2px solid #91FF00 } -.ace-idle-fingers .ace_cursor.ace_overwrite { +.ace-idle-fingers .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #91FF00 } diff --git a/lib/ace/theme/kr_theme.css b/lib/ace/theme/kr_theme.css index ffefb03a..0f42c384 100644 --- a/lib/ace/theme/kr_theme.css +++ b/lib/ace/theme/kr_theme.css @@ -20,7 +20,7 @@ border-left: 2px solid #FF9900 } -.ace-kr-theme .ace_cursor.ace_overwrite { +.ace-kr-theme .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FF9900 } diff --git a/lib/ace/theme/merbivore.css b/lib/ace/theme/merbivore.css index a842b716..69e81376 100644 --- a/lib/ace/theme/merbivore.css +++ b/lib/ace/theme/merbivore.css @@ -20,7 +20,7 @@ border-left: 2px solid #FFFFFF } -.ace-merbivore .ace_cursor.ace_overwrite { +.ace-merbivore .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } diff --git a/lib/ace/theme/merbivore_soft.css b/lib/ace/theme/merbivore_soft.css index 7e276a89..ddd417f8 100644 --- a/lib/ace/theme/merbivore_soft.css +++ b/lib/ace/theme/merbivore_soft.css @@ -20,7 +20,7 @@ border-left: 2px solid #FFFFFF } -.ace-merbivore-soft .ace_cursor.ace_overwrite { +.ace-merbivore-soft .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } diff --git a/lib/ace/theme/mono_industrial.css b/lib/ace/theme/mono_industrial.css index b5eb68b2..f9a318fc 100644 --- a/lib/ace/theme/mono_industrial.css +++ b/lib/ace/theme/mono_industrial.css @@ -20,7 +20,7 @@ border-left: 2px solid #FFFFFF } -.ace-mono-industrial .ace_cursor.ace_overwrite { +.ace-mono-industrial .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } @@ -135,4 +135,4 @@ .ace-mono-industrial .ace_indent-guide { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y -} \ No newline at end of file +} diff --git a/lib/ace/theme/monokai.css b/lib/ace/theme/monokai.css index 1a34fed4..ed876c79 100644 --- a/lib/ace/theme/monokai.css +++ b/lib/ace/theme/monokai.css @@ -20,7 +20,7 @@ border-left: 2px solid #F8F8F0 } -.ace-monokai .ace_cursor.ace_overwrite { +.ace-monokai .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #F8F8F0 } diff --git a/lib/ace/theme/pastel_on_dark.css b/lib/ace/theme/pastel_on_dark.css index 18f61d85..b517f22a 100644 --- a/lib/ace/theme/pastel_on_dark.css +++ b/lib/ace/theme/pastel_on_dark.css @@ -20,7 +20,7 @@ border-left: 2px solid #A7A7A7 } -.ace-pastel-on-dark .ace_cursor.ace_overwrite { +.ace-pastel-on-dark .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #A7A7A7 } diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css index 26b206b0..4d47fb76 100644 --- a/lib/ace/theme/solarized_dark.css +++ b/lib/ace/theme/solarized_dark.css @@ -22,7 +22,7 @@ border-left: 2px solid #D30102 } -.ace-solarized-dark .ace_cursor.ace_overwrite { +.ace-solarized-dark .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #D30102 } diff --git a/lib/ace/theme/solarized_light.css b/lib/ace/theme/solarized_light.css index e00b9b39..65dfe8df 100644 --- a/lib/ace/theme/solarized_light.css +++ b/lib/ace/theme/solarized_light.css @@ -20,7 +20,7 @@ border-left: 2px solid #000000 } -.ace-solarized-light .ace_cursor.ace_overwrite { +.ace-solarized-light .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } diff --git a/lib/ace/theme/textmate.css b/lib/ace/theme/textmate.css index ef0be415..538700f2 100644 --- a/lib/ace/theme/textmate.css +++ b/lib/ace/theme/textmate.css @@ -20,7 +20,7 @@ border-left: 2px solid black; } -.ace-tm .ace_cursor.ace_overwrite { +.ace-tm .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid black; } diff --git a/lib/ace/theme/tomorrow.css b/lib/ace/theme/tomorrow.css index 90c397bf..a5d88b6c 100644 --- a/lib/ace/theme/tomorrow.css +++ b/lib/ace/theme/tomorrow.css @@ -20,7 +20,7 @@ border-left: 2px solid #AEAFAD } -.ace-tomorrow .ace_cursor.ace_overwrite { +.ace-tomorrow .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #AEAFAD } diff --git a/lib/ace/theme/tomorrow_night.css b/lib/ace/theme/tomorrow_night.css index 8a62bac2..0baaf323 100644 --- a/lib/ace/theme/tomorrow_night.css +++ b/lib/ace/theme/tomorrow_night.css @@ -20,7 +20,7 @@ border-left: 2px solid #AEAFAD } -.ace-tomorrow-night .ace_cursor.ace_overwrite { +.ace-tomorrow-night .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #AEAFAD } diff --git a/lib/ace/theme/tomorrow_night_blue.css b/lib/ace/theme/tomorrow_night_blue.css index ca0a84fe..daebddb1 100644 --- a/lib/ace/theme/tomorrow_night_blue.css +++ b/lib/ace/theme/tomorrow_night_blue.css @@ -21,7 +21,7 @@ border-left: 2px solid #FFFFFF } -.ace-tomorrow-night-blue .ace_cursor.ace_overwrite { +.ace-tomorrow-night-blue .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } diff --git a/lib/ace/theme/tomorrow_night_bright.css b/lib/ace/theme/tomorrow_night_bright.css index 24f4469c..065e2f00 100644 --- a/lib/ace/theme/tomorrow_night_bright.css +++ b/lib/ace/theme/tomorrow_night_bright.css @@ -20,7 +20,7 @@ border-left: 2px solid #9F9F9F } -.ace-tomorrow-night-bright .ace_cursor.ace_overwrite { +.ace-tomorrow-night-bright .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #9F9F9F } diff --git a/lib/ace/theme/tomorrow_night_eighties.css b/lib/ace/theme/tomorrow_night_eighties.css index c1695b0d..5584d62d 100644 --- a/lib/ace/theme/tomorrow_night_eighties.css +++ b/lib/ace/theme/tomorrow_night_eighties.css @@ -21,7 +21,7 @@ border-left: 2px solid #CCCCCC } -.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite { +.ace-tomorrow-night-eighties .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #CCCCCC } diff --git a/lib/ace/theme/twilight.css b/lib/ace/theme/twilight.css index 3051a3e6..3ef9de2e 100644 --- a/lib/ace/theme/twilight.css +++ b/lib/ace/theme/twilight.css @@ -20,7 +20,7 @@ border-left: 2px solid #A7A7A7 } -.ace-twilight .ace_cursor.ace_overwrite { +.ace-twilight .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #A7A7A7 } diff --git a/lib/ace/theme/vibrant_ink.css b/lib/ace/theme/vibrant_ink.css index fdd965f1..c611681d 100644 --- a/lib/ace/theme/vibrant_ink.css +++ b/lib/ace/theme/vibrant_ink.css @@ -20,7 +20,7 @@ border-left: 2px solid #FFFFFF } -.ace-vibrant-ink .ace_cursor.ace_overwrite { +.ace-vibrant-ink .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #FFFFFF } diff --git a/lib/ace/theme/xcode.css b/lib/ace/theme/xcode.css index 16db2006..463703b0 100644 --- a/lib/ace/theme/xcode.css +++ b/lib/ace/theme/xcode.css @@ -22,7 +22,7 @@ border-left: 2px solid #000000 } -.ace-xcode .ace_cursor.ace_overwrite { +.ace-xcode .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } diff --git a/tool/Theme.tmpl.css b/tool/Theme.tmpl.css index 3b83c5ba..180132f2 100644 --- a/tool/Theme.tmpl.css +++ b/tool/Theme.tmpl.css @@ -22,7 +22,7 @@ border-left: 2px solid %cursor%; } -.%cssClass% .ace_cursor.ace_overwrite { +.%cssClass% .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid %overwrite%; } From 9179b0443829dae4007e6aca9328bed8415693b5 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 26 Oct 2012 19:46:37 +0400 Subject: [PATCH 6/7] undo rename --- lib/ace/layer/cursor.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index d42b1d28..f4c1ae97 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -61,14 +61,14 @@ var Cursor = function(parentEl) { this.setBlinking = function(blinking) { if (blinking != this.isBlinking){ this.isBlinking = blinking; - this.resetTimer(); + this.restartTimer(); } }; this.setBlinkInterval = function(blinkInterval) { if (blinkInterval != this.blinkInterval){ this.blinkInterval = blinkInterval; - this.resetTimer(); + this.restartTimer(); } }; @@ -79,7 +79,7 @@ var Cursor = function(parentEl) { dom.addCssClass(this.element, "ace_smooth-blinking"); else dom.removeCssClass(this.element, "ace_smooth-blinking"); - this.resetTimer(); + this.restartTimer(); } }; @@ -102,16 +102,16 @@ var Cursor = function(parentEl) { this.hideCursor = function() { this.isVisible = false; dom.addCssClass(this.element, "ace_hidden-cursors"); - this.resetTimer(); + this.restartTimer(); }; this.showCursor = function() { this.isVisible = true; dom.removeCssClass(this.element, "ace_hidden-cursors"); - this.resetTimer(); + this.restartTimer(); }; - this.resetTimer = function() { + this.restartTimer = function() { clearInterval(this.intervalId); clearTimeout(this.timeoutId); if (this.smoothBlinking) @@ -199,7 +199,7 @@ var Cursor = function(parentEl) { // cache for textarea and gutter highlight this.$pixelPos = pixelPos; - this.resetTimer(); + this.restartTimer(); }; this.$setOverwrite = function(overwrite) { From 4ab41d02cce23966bb847cc5cd5b678cf48a431a Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 26 Oct 2012 20:55:36 +0400 Subject: [PATCH 7/7] cursors should start in hidden state --- lib/ace/layer/cursor.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index f4c1ae97..a15e7581 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -45,6 +45,7 @@ var Cursor = function(parentEl) { this.cursors = []; this.cursor = this.addCursor(); + dom.addCssClass(this.element, "ace_hidden-cursors"); }; (function() { @@ -146,12 +147,8 @@ var Cursor = function(parentEl) { }; this.getPixelPosition = function(position, onScreen) { - if (!this.config || !this.session) { - return { - left : 0, - top : 0 - }; - } + if (!this.config || !this.session) + return {left : 0, top : 0}; if (!position) position = this.session.selection.getCursor(); @@ -161,10 +158,7 @@ var Cursor = function(parentEl) { var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * this.config.lineHeight; - return { - left : cursorLeft, - top : cursorTop - }; + return {left : cursorLeft, top : cursorTop}; }; this.update = function(config) {