Explorar el Código

[core] Support middle click paste on Ace editor

Enrico Berti hace 10 años
padre
commit
0f4cd07

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ace.js


+ 17 - 0
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -2055,6 +2055,23 @@ ko.bindingHandlers.aceEditor = {
       editor.session.getMode().$id = valueAccessor().mode(); // forces the id again because of Ace command internals
     }, 100);
 
+    editor.middleClick = false;
+    editor.on("mousedown", function (e) {
+      if (e.domEvent.which == 2) { // middle click
+        editor.middleClick = true;
+        var tempText = editor.getSelectedText();
+        if (e.$pos) {
+          editor.session.insert(e.$pos, tempText);
+        }
+        window.setTimeout(function () {
+          editor.middleClick = false;
+          if (e.$pos) {
+            editor.moveCursorTo(e.$pos.row, e.$pos.column + tempText.length);
+          }
+        }, 200);
+      }
+    });
+
     editor.on("change", function (e) {
       editor.clearErrors();
       editor.session.getMode().$id = valueAccessor().mode();

+ 3 - 0
tools/ace-editor/lib/ace/keyboard/textinput.js

@@ -264,6 +264,9 @@ var TextInput = function(parentNode, host) {
     };
     
     var handleClipboardData = function(e, data) {
+        if (typeof host.middleClick != "undefined" && host.middleClick){
+          return host.getSelectedText() || " ";
+        }
         var clipboardData = e.clipboardData || window.clipboardData;
         if (!clipboardData || BROKEN_SETDATA)
             return;

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio