diff --git a/lib/ace/autocomplete.js b/lib/ace/autocomplete.js index f3800c16..a03a7e18 100644 --- a/lib/ace/autocomplete.js +++ b/lib/ace/autocomplete.js @@ -139,7 +139,7 @@ var Autocomplete = function() { var max = this.popup.session.getLength() - 1; switch(where) { - case "up": row = row < 0 ? max : row - 1; break; + case "up": row = row <= 0 ? max : row - 1; break; case "down": row = row >= max ? -1 : row + 1; break; case "start": row = 0; break; case "end": row = max; break; diff --git a/lib/ace/keyboard/textinput.js b/lib/ace/keyboard/textinput.js index 5c75b6e9..fbf37786 100644 --- a/lib/ace/keyboard/textinput.js +++ b/lib/ace/keyboard/textinput.js @@ -251,7 +251,7 @@ var TextInput = function(parentNode, host) { var mime = USE_IE_MIME_TYPE ? "Text" : "text/plain"; if (data) { // Safari 5 has clipboardData object, but does not handle setData() - return clipboardData.setData(mime, data); + return clipboardData.setData(mime, data) !== false; } else { return clipboardData.getData(mime); } diff --git a/lib/ace/mouse/default_gutter_handler.js b/lib/ace/mouse/default_gutter_handler.js index 1b5cb986..43120c79 100644 --- a/lib/ace/mouse/default_gutter_handler.js +++ b/lib/ace/mouse/default_gutter_handler.js @@ -93,7 +93,7 @@ function GutterHandler(mouseHandler) { if (mouseHandler.$tooltipFollowsMouse) { moveTooltip(mouseEvent); } else { - var gutterElement = gutter.$cells[row].element; + var gutterElement = gutter.$cells[editor.session.documentToScreenRow(row, 0)].element; var rect = gutterElement.getBoundingClientRect(); var style = tooltip.getElement().style; style.left = rect.right + "px";