From 3b7871ce0e0e74e6fa9d2a2629148eac553d94a4 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 20 Dec 2011 12:16:49 +0100 Subject: [PATCH] fix flash of hidden textarea --- lib/ace/keyboard/textinput.js | 3 ++- lib/ace/lib/dom.js | 6 +++--- lib/ace/renderloop.js | 8 +++++--- lib/ace/theme/chrome.js | 3 +++ lib/ace/theme/clouds.js | 5 +++-- lib/ace/theme/clouds_midnight.js | 5 +++-- lib/ace/theme/cobalt.js | 4 ++-- lib/ace/theme/crimson_editor.js | 5 ++--- lib/ace/theme/dawn.js | 4 ++-- lib/ace/theme/dreamweaver.js | 4 ++-- lib/ace/theme/eclipse.js | 5 ++--- lib/ace/theme/idle_fingers.js | 4 ++-- lib/ace/theme/kr_theme.js | 4 ++-- lib/ace/theme/merbivore.js | 4 ++-- lib/ace/theme/merbivore_soft.js | 4 ++-- lib/ace/theme/mono_industrial.js | 4 ++-- lib/ace/theme/monokai.js | 4 ++-- lib/ace/theme/pastel_on_dark.js | 4 ++-- lib/ace/theme/solarized_dark.js | 4 ++-- lib/ace/theme/solarized_light.js | 4 ++-- lib/ace/theme/textmate.js | 4 ++-- lib/ace/theme/tomorrow.js | 4 ++-- lib/ace/theme/tomorrow_night.js | 4 ++-- lib/ace/theme/tomorrow_night_blue.js | 4 ++-- lib/ace/theme/tomorrow_night_bright.js | 4 ++-- lib/ace/theme/tomorrow_night_eighties.js | 4 ++-- lib/ace/theme/twilight.js | 4 ++-- lib/ace/theme/vibrant_ink.js | 4 ++-- lib/ace/virtual_renderer.js | 8 ++++---- tool/theme.tmpl.js | 2 +- 30 files changed, 68 insertions(+), 62 deletions(-) diff --git a/lib/ace/keyboard/textinput.js b/lib/ace/keyboard/textinput.js index 0412ab40..bb917f5b 100644 --- a/lib/ace/keyboard/textinput.js +++ b/lib/ace/keyboard/textinput.js @@ -51,6 +51,7 @@ var TextInput = function(parentNode, host) { text.setAttribute("x-palm-disable-auto-cap", true); text.style.left = "-10000px"; + text.style.position = "fixed"; parentNode.insertBefore(text, parentNode.firstChild); var PLACEHOLDER = String.fromCharCode(0); @@ -190,7 +191,7 @@ var TextInput = function(parentNode, host) { if ("onbeforecopy" in text && typeof clipboardData !== "undefined") { event.addListener(text, "beforecopy", function(e) { var copyText = host.getCopyText(); - if(copyText) + if (copyText) clipboardData.setData("Text", copyText); else e.preventDefault(); diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js index 9e2cb934..4c5af70d 100644 --- a/lib/ace/lib/dom.js +++ b/lib/ace/lib/dom.js @@ -145,9 +145,9 @@ exports.importCssString = function importCssString(cssText, id, doc) { if (id) style.title = id; } else { - style = doc.createElementNS ? - doc.createElementNS(XHTML_NS, "style") : - doc.createElement("style"); + style = doc.createElementNS + ? doc.createElementNS(XHTML_NS, "style") + : doc.createElement("style"); style.appendChild(doc.createTextNode(cssText)); if (id) diff --git a/lib/ace/renderloop.js b/lib/ace/renderloop.js index 20d97f94..9a754c52 100644 --- a/lib/ace/renderloop.js +++ b/lib/ace/renderloop.js @@ -59,9 +59,11 @@ var RenderLoop = function(onRender, win) { var _self = this; event.nextTick(function() { _self.pending = false; - var changes = _self.changes; - _self.changes = 0; - _self.onRender(changes); + var changes; + while (changes = _self.changes) { + _self.changes = 0; + _self.onRender(changes); + } }, this.window); } }; diff --git a/lib/ace/theme/chrome.js b/lib/ace/theme/chrome.js index 78c92dea..0ea77417 100644 --- a/lib/ace/theme/chrome.js +++ b/lib/ace/theme/chrome.js @@ -207,4 +207,7 @@ exports.cssText = ".ace-chrome .ace_editor {\ color: #994409;\ }"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + }); diff --git a/lib/ace/theme/clouds.js b/lib/ace/theme/clouds.js index 8eeb7617..04136f18 100644 --- a/lib/ace/theme/clouds.js +++ b/lib/ace/theme/clouds.js @@ -146,6 +146,7 @@ exports.cssText = "\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + }); diff --git a/lib/ace/theme/clouds_midnight.js b/lib/ace/theme/clouds_midnight.js index 1bef28fb..ff415309 100644 --- a/lib/ace/theme/clouds_midnight.js +++ b/lib/ace/theme/clouds_midnight.js @@ -147,6 +147,7 @@ background-color:#E92E2E;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + }); diff --git a/lib/ace/theme/cobalt.js b/lib/ace/theme/cobalt.js index 4fdef94e..303964b0 100644 --- a/lib/ace/theme/cobalt.js +++ b/lib/ace/theme/cobalt.js @@ -161,6 +161,6 @@ background-color:#001221;\ background-color:#130D26;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/crimson_editor.js b/lib/ace/theme/crimson_editor.js index 0a61e4b4..d38f0d5c 100644 --- a/lib/ace/theme/crimson_editor.js +++ b/lib/ace/theme/crimson_editor.js @@ -193,7 +193,6 @@ exports.cssText = ".ace-crimson-editor .ace_editor {\ exports.cssClass = "ace-crimson-editor"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); - +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/dawn.js b/lib/ace/theme/dawn.js index da3e0850..ed714e03 100644 --- a/lib/ace/theme/dawn.js +++ b/lib/ace/theme/dawn.js @@ -164,6 +164,6 @@ color:#5A525F;\ color:#693A17;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/dreamweaver.js b/lib/ace/theme/dreamweaver.js index 9f7496ce..eba74244 100644 --- a/lib/ace/theme/dreamweaver.js +++ b/lib/ace/theme/dreamweaver.js @@ -221,6 +221,6 @@ exports.cssText = ".ace-tm .ace_editor {\ color: rgb(255, 0, 0)\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/eclipse.js b/lib/ace/theme/eclipse.js index 76920e66..3c4f05e7 100644 --- a/lib/ace/theme/eclipse.js +++ b/lib/ace/theme/eclipse.js @@ -140,7 +140,6 @@ exports.cssText = ".ace-eclipse .ace_editor {\ exports.cssClass = "ace-eclipse"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); - +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/idle_fingers.js b/lib/ace/theme/idle_fingers.js index ec52bf82..675235d4 100644 --- a/lib/ace/theme/idle_fingers.js +++ b/lib/ace/theme/idle_fingers.js @@ -153,6 +153,6 @@ color:#BC9458;\ background-color:#FFF980; \ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/kr_theme.js b/lib/ace/theme/kr_theme.js index e1cb50c0..1c9b9277 100644 --- a/lib/ace/theme/kr_theme.js +++ b/lib/ace/theme/kr_theme.js @@ -156,6 +156,6 @@ color:#706D5B;\ background-color:#0F0040;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/merbivore.js b/lib/ace/theme/merbivore.js index 9ee1c221..352db138 100644 --- a/lib/ace/theme/merbivore.js +++ b/lib/ace/theme/merbivore.js @@ -156,6 +156,6 @@ color:#AD2EA4;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/merbivore_soft.js b/lib/ace/theme/merbivore_soft.js index 56a5d58d..8e5c4832 100644 --- a/lib/ace/theme/merbivore_soft.js +++ b/lib/ace/theme/merbivore_soft.js @@ -162,6 +162,6 @@ color:#AC4BB8;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/mono_industrial.js b/lib/ace/theme/mono_industrial.js index 196c1b11..5d0cbe3b 100644 --- a/lib/ace/theme/mono_industrial.js +++ b/lib/ace/theme/mono_industrial.js @@ -156,6 +156,6 @@ background-color:#151C19;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/monokai.js b/lib/ace/theme/monokai.js index 13bd9136..48e66407 100644 --- a/lib/ace/theme/monokai.js +++ b/lib/ace/theme/monokai.js @@ -152,6 +152,6 @@ background-color:#AE81FF;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/pastel_on_dark.js b/lib/ace/theme/pastel_on_dark.js index d61464b5..a2ca4f56 100644 --- a/lib/ace/theme/pastel_on_dark.js +++ b/lib/ace/theme/pastel_on_dark.js @@ -174,6 +174,6 @@ color:#D2A8A1;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/solarized_dark.js b/lib/ace/theme/solarized_dark.js index e5b950c3..1491e765 100644 --- a/lib/ace/theme/solarized_dark.js +++ b/lib/ace/theme/solarized_dark.js @@ -151,6 +151,6 @@ color:#657B83;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/solarized_light.js b/lib/ace/theme/solarized_light.js index dba5e522..2d7e7e49 100644 --- a/lib/ace/theme/solarized_light.js +++ b/lib/ace/theme/solarized_light.js @@ -150,6 +150,6 @@ exports.cssText = "\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/textmate.js b/lib/ace/theme/textmate.js index 45c8b711..33c8aa25 100644 --- a/lib/ace/theme/textmate.js +++ b/lib/ace/theme/textmate.js @@ -195,6 +195,6 @@ exports.cssText = ".ace-tm .ace_editor {\ color: rgb(255, 0, 0)\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/tomorrow.js b/lib/ace/theme/tomorrow.js index 9f49f92b..d918da27 100644 --- a/lib/ace/theme/tomorrow.js +++ b/lib/ace/theme/tomorrow.js @@ -172,6 +172,6 @@ background-color:#8959A8;\ color:#718C00;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/tomorrow_night.js b/lib/ace/theme/tomorrow_night.js index 5be20505..ebbaf242 100644 --- a/lib/ace/theme/tomorrow_night.js +++ b/lib/ace/theme/tomorrow_night.js @@ -172,6 +172,6 @@ background-color:#B798BF;\ color:#B5BD68;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/tomorrow_night_blue.js b/lib/ace/theme/tomorrow_night_blue.js index 015f6da8..11d15b69 100644 --- a/lib/ace/theme/tomorrow_night_blue.js +++ b/lib/ace/theme/tomorrow_night_blue.js @@ -172,6 +172,6 @@ background-color:#EBBBFF;\ color:#D1F1A9;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/tomorrow_night_bright.js b/lib/ace/theme/tomorrow_night_bright.js index 7a677655..3a9ae844 100644 --- a/lib/ace/theme/tomorrow_night_bright.js +++ b/lib/ace/theme/tomorrow_night_bright.js @@ -172,6 +172,6 @@ background-color:#B798BF;\ color:#B9CA4A;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/tomorrow_night_eighties.js b/lib/ace/theme/tomorrow_night_eighties.js index 01a149f5..c491e64e 100644 --- a/lib/ace/theme/tomorrow_night_eighties.js +++ b/lib/ace/theme/tomorrow_night_eighties.js @@ -168,6 +168,6 @@ background-color:#CC99CC;\ color:#99CC99;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/twilight.js b/lib/ace/theme/twilight.js index 5b22e828..4bd7b00d 100644 --- a/lib/ace/theme/twilight.js +++ b/lib/ace/theme/twilight.js @@ -174,6 +174,6 @@ color:#5F5A60;\ color:#F9EE98;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/theme/vibrant_ink.js b/lib/ace/theme/vibrant_ink.js index 738d0590..20633f7a 100644 --- a/lib/ace/theme/vibrant_ink.js +++ b/lib/ace/theme/vibrant_ink.js @@ -157,6 +157,6 @@ color:#99CC99;\ text-decoration:underline;\ }"; - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); }); diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index eecf8376..6664177e 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -62,10 +62,7 @@ var VirtualRenderer = function(container, theme) { // // Imports CSS once per DOM document ('ace_editor' serves as an identifier). // dom.importCssString(editorCss, "ace_editor", container.ownerDocument); - // Chrome has some strange rendering issues if this is not done async - setTimeout(function() { - dom.addCssClass(container, "ace_editor"); - }, 0); + dom.addCssClass(container, "ace_editor"); this.setTheme(theme); @@ -341,6 +338,9 @@ var VirtualRenderer = function(container, theme) { // this persists in IE9 if (useragent.isIE) return; + + if (this.layerConfig.lastRow === 0) + return; var pos = this.$cursorLayer.getPixelPosition(); if (!pos) diff --git a/tool/theme.tmpl.js b/tool/theme.tmpl.js index fba43b29..4b38d43a 100644 --- a/tool/theme.tmpl.js +++ b/tool/theme.tmpl.js @@ -42,5 +42,5 @@ exports.cssClass = "%cssClass%"; exports.cssText = %css%; var dom = require("../lib/dom"); - dom.importCssString(exports.cssText); + dom.importCssString(exports.cssText, exports.cssClass); });