X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/3193141f55df20910cf8ba35f9e669d79c90d3f4..58e0903a3f0e1e105a11638b18b588e9eb6a8b9e:/platforma/static/js/lib/codemirror/codemirror.js diff --git a/platforma/static/js/lib/codemirror/codemirror.js b/platforma/static/js/lib/codemirror/codemirror.js index f63ed07e..4eb5fb73 100644 --- a/platforma/static/js/lib/codemirror/codemirror.js +++ b/platforma/static/js/lib/codemirror/codemirror.js @@ -55,9 +55,9 @@ var CodeMirror = (function(){ function wrapLineNumberDiv(place) { return function(node) { - var container = document.createElement("DIV"), - nums = document.createElement("DIV"), - scroller = document.createElement("DIV"); + var container = document.createElement("div"), + nums = document.createElement("div"), + scroller = document.createElement("div"); container.style.position = "relative"; nums.style.position = "absolute"; nums.style.height = "100%"; @@ -81,10 +81,13 @@ var CodeMirror = (function(){ var nextNum = 1, barWidth = null; function sizeBar() { - for (var root = frame; root.parentNode; root = root.parentNode); - if (root != document || !win.Editor) { - clearInterval(sizeInterval); - return; + if (!frame.offsetWidth || !win.Editor) { + for (var cur = frame; cur.parentNode; cur = cur.parentNode) { + if (cur != document) { + clearInterval(sizeInterval); + return; + } + } } if (nums.offsetWidth != barWidth) { @@ -95,7 +98,7 @@ var CodeMirror = (function(){ function update() { var diff = 20 + Math.max(doc.body.offsetHeight, frame.offsetHeight) - scroller.offsetHeight; for (var n = Math.ceil(diff / 10); n > 0; n--) { - var div = document.createElement("DIV"); + var div = document.createElement("div"); div.appendChild(document.createTextNode(nextNum++)); scroller.appendChild(div); } @@ -117,7 +120,7 @@ var CodeMirror = (function(){ this.options = options = options || {}; setDefaults(options, CodeMirrorConfig); - var frame = this.frame = document.createElement("IFRAME"); + var frame = this.frame = document.createElement("iframe"); if (options.iframeClass) frame.className = options.iframeClass; frame.frameBorder = 0; frame.src = "javascript:false;"; @@ -132,7 +135,6 @@ var CodeMirror = (function(){ var node = place; place = function(n){node.appendChild(n);}; } - if (options.lineNumbers) place = wrapLineNumberDiv(place); place(frame); @@ -173,14 +175,10 @@ var CodeMirror = (function(){ getCode: function() {return this.editor.getCode();}, setCode: function(code) {this.editor.importCode(code);}, - selection: function() {this.focusIfIE(); return this.editor.selectedText();}, + selection: function() {return this.editor.selectedText();}, reindent: function() {this.editor.reindent();}, - reindentSelection: function() {this.focusIfIE(); this.editor.reindentSelection(null);}, + reindentSelection: function() {this.editor.reindentSelection(null);}, - focusIfIE: function() { - // in IE, a lot of selection-related functionality only works when the frame is focused - if (this.win.select.ie_selection) this.focus(); - }, focus: function() { this.win.focus(); if (this.editor.selectionSnapshot) // IE hack @@ -208,7 +206,10 @@ var CodeMirror = (function(){ setParser: function(name) {this.editor.setParser(name);}, - cursorPosition: function(start) {this.focusIfIE(); return this.editor.cursorPosition(start);}, + cursorPosition: function(start) { + if (this.win.select.ie_selection) this.focus(); + return this.editor.cursorPosition(start); + }, firstLine: function() {return this.editor.firstLine();}, lastLine: function() {return this.editor.lastLine();}, nextLine: function(line) {return this.editor.nextLine(line);},