diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index b12eb95b..04683485 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -406,7 +406,9 @@ bindCheckbox("highlight_token", function(checked) { /************** dragover ***************************/ event.addListener(container, "dragover", function(e) { - return event.preventDefault(e); + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return event.preventDefault(e); }); event.addListener(container, "drop", function(e) { diff --git a/demo/kitchen-sink/styles.css b/demo/kitchen-sink/styles.css index fba03773..f32a82a0 100644 --- a/demo/kitchen-sink/styles.css +++ b/demo/kitchen-sink/styles.css @@ -19,6 +19,7 @@ body { #logo { padding: 15px; margin-left: 70px; + border: none; } #editor-container { diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index 0aee0f71..81f8fbe6 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -252,7 +252,7 @@ .ace_gutter-tooltip { background-color: #FFF; - background-image: -webkit-linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); + background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; @@ -342,9 +342,7 @@ -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } - - - + .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 2258d0fc..933f1479 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -34,7 +34,6 @@ define(function(require, exports, module) { var config = require("./config"); var oop = require("./lib/oop"); var lang = require("./lib/lang"); -var net = require("./lib/net"); var EventEmitter = require("./lib/event_emitter").EventEmitter; var Selection = require("./selection").Selection; var TextMode = require("./mode/text").Mode; diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js index 34549916..81c9773a 100644 --- a/lib/ace/lib/dom.js +++ b/lib/ace/lib/dom.js @@ -39,15 +39,6 @@ exports.createElement = function(tag, ns) { document.createElement(tag); }; -exports.setText = function(elem, text) { - if (elem.innerText !== undefined) { - elem.innerText = text; - } - if (elem.textContent !== undefined) { - elem.textContent = text; - } -}; - exports.hasCssClass = function(el, name) { var classes = el.className.split(/\s+/g); return classes.indexOf(name) !== -1; @@ -143,7 +134,7 @@ exports.importCssString = function importCssString(cssText, id, doc) { if (id) style.id = id; - var head = doc.getElementsByTagName("head")[0] || doc.documentElement; + var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; head.appendChild(style); } }; @@ -156,7 +147,7 @@ exports.importCssStylsheet = function(uri, doc) { link.rel = 'stylesheet'; link.href = uri; - var head = doc.getElementsByTagName("head")[0] || doc.documentElement; + var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; head.appendChild(link); } }; @@ -259,22 +250,24 @@ exports.setInnerHtml = function(el, innerHtml) { return element; }; -exports.setInnerText = function(el, innerText) { - var document = el.ownerDocument; - if (document.body && "textContent" in document.body) +if ("textContent" in document.documentElement) { + exports.setInnerText = function(el, innerText) { el.textContent = innerText; - else - el.innerText = innerText; + }; -}; - -exports.getInnerText = function(el) { - var document = el.ownerDocument; - if (document.body && "textContent" in document.body) + exports.getInnerText = function(el) { return el.textContent; - else - return el.innerText || el.textContent || ""; -}; + }; +} +else { + exports.setInnerText = function(el, innerText) { + el.innerText = innerText; + }; + + exports.getInnerText = function(el) { + return el.innerText; + }; +} exports.getParentWindow = function(document) { return document.defaultView || document.parentWindow; diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index 06574425..37cb7846 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -301,10 +301,10 @@ if (window.postMessage && !useragent.isOldIE) { exports.nextFrame = window.requestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame; + window.webkitRequestAnimationFrame || + window.msRequestAnimationFrame || + window.oRequestAnimationFrame; if (exports.nextFrame) exports.nextFrame = exports.nextFrame.bind(window); diff --git a/lib/ace/lib/net.js b/lib/ace/lib/net.js index bdb01ab6..e125582e 100644 --- a/lib/ace/lib/net.js +++ b/lib/ace/lib/net.js @@ -8,12 +8,10 @@ define(function(require, exports, module) { "use strict"; -var useragent = require("./useragent"); - exports.get = function (url, callback) { - var xhr = exports.createXhr(); + var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); - xhr.onreadystatechange = function (evt) { + xhr.onreadystatechange = function () { //Do not explicitly handle errors, those should be //visible via console output in the browser. if (xhr.readyState === 4) { @@ -23,47 +21,19 @@ exports.get = function (url, callback) { xhr.send(null); }; -var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; - -exports.createXhr = function() { - //Would love to dump the ActiveX crap in here. Need IE 6 to die first. - var xhr, i, progId; - if (typeof XMLHttpRequest !== "undefined") { - return new XMLHttpRequest(); - } else { - for (i = 0; i < 3; i++) { - progId = progIds[i]; - try { - xhr = new ActiveXObject(progId); - } catch (e) {} - - if (xhr) { - progIds = [progId]; // so faster next time - break; - } - } - } - - if (!xhr) { - throw new Error("createXhr(): XMLHttpRequest not available"); - } - - return xhr; -}; - exports.loadScript = function(path, callback) { - var head = document.getElementsByTagName('head')[0]; + var head = document.head || document.getElementsByTagName('head')[0]; var s = document.createElement('script'); s.src = path; head.appendChild(s); - if (useragent.isOldIE) + if (s.onload !== undefined) + s.onload = callback; + else s.onreadystatechange = function () { this.readyState == 'loaded' && callback(); }; - else - s.onload = callback; }; }); diff --git a/lib/ace/mode/behaviour/css.js b/lib/ace/mode/behaviour/css.js index fd1f4041..1c35f744 100644 --- a/lib/ace/mode/behaviour/css.js +++ b/lib/ace/mode/behaviour/css.js @@ -70,11 +70,19 @@ var CssBehaviour = function () { this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column ++; + return range; + } } } }); diff --git a/lib/ace/mouse/dragdrop.js b/lib/ace/mouse/dragdrop.js index 88f526b5..b5c5b167 100644 --- a/lib/ace/mouse/dragdrop.js +++ b/lib/ace/mouse/dragdrop.js @@ -43,6 +43,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragenter", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; counter++; if (!dragSelectionMarker) { range = editor.getSelectionRange(); @@ -59,6 +62,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragover", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; x = e.clientX; y = e.clientY; return event.preventDefault(e); @@ -73,6 +79,9 @@ var DragdropHandler = function(mouseHandler) { event.addListener(mouseTarget, "dragleave", function(e) { if (editor.getReadOnly()) return; + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return; counter--; if (counter > 0) return; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index a6a61653..172d669e 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -36,7 +36,6 @@ var dom = require("./lib/dom"); var event = require("./lib/event"); var useragent = require("./lib/useragent"); var config = require("./config"); -var net = require("./lib/net"); var GutterLayer = require("./layer/gutter").Gutter; var MarkerLayer = require("./layer/marker").Marker; var TextLayer = require("./layer/text").Text;