Welcome, guest | Sign In | My Account | Store | Cart
var view = ko.views.manager.currentView;
var scimoz = view.scimoz;
var methodName = "*ext*verticalEditing";
if (!(methodName in view)) {
    view[methodName] = function(event) {
        if (event.keyCode == event.DOM_VK_DOWN) {
            var currentLine = scimoz.lineFromPosition(scimoz.currentPos);
            if (currentLine >= scimoz.lineCount - 1) {
                toggleOff();
                return;
            }
            var targetPos = scimoz.positionFromLine(currentLine + 1) + methodObject.columnPos;
            scimoz.gotoPos(targetPos);
            event.preventDefault();
            event.stopPropagation();   
        } else if (event.keyCode == event.DOM_VK_ESCAPE) {
            toggleOff();
        }
    };
    view[methodName].active = false;
    var macro = ko.macros.current;
    view[methodName].macro = macro;
    view[methodName].orig_iconurl = macro.iconurl;
}
var methodObject = view[methodName];

function toggleOn() {
    view.addEventListener('keypress', methodObject, true);
    methodObject.active = true;
    if (komodo.view) {
        komodo.view.setFocus();
        if (komodo.view.scintilla) { komodo.view.scintilla.focus(); }
    }
    methodObject.columnPos = scimoz.getColumn(scimoz.currentPos);
    methodObject.macro.iconurl = 'chrome://komodo/skin/images/leftarrow.png';
    methodObject.macro.save();
    window.addEventListener('current_view_changed', toggleOff, false);
    window.addEventListener('view_closed', toggleOff, false);
    //dump("listen for a keypress event for column: " + methodObject.columnPos + "\n");
}

function toggleOff() {
    //dump("stop listen for a keypress event\n");
    view.removeEventListener('keypress', methodObject, true);
    window.removeEventListener('current_view_changed', toggleOff, false);
    window.removeEventListener('view_closed', toggleOff, false);
    methodObject.active = false;
    methodObject.macro.iconurl = methodObject.orig_iconurl;
    methodObject.macro.save();
}

if (!methodObject.active) {
    toggleOn();
} else {
    toggleOff();
}

Diff to Previous Revision

--- revision 3 2010-09-25 00:42:23
+++ revision 4 2010-09-29 19:09:35
@@ -34,12 +34,16 @@
     methodObject.columnPos = scimoz.getColumn(scimoz.currentPos);
     methodObject.macro.iconurl = 'chrome://komodo/skin/images/leftarrow.png';
     methodObject.macro.save();
+    window.addEventListener('current_view_changed', toggleOff, false);
+    window.addEventListener('view_closed', toggleOff, false);
     //dump("listen for a keypress event for column: " + methodObject.columnPos + "\n");
 }
 
 function toggleOff() {
     //dump("stop listen for a keypress event\n");
     view.removeEventListener('keypress', methodObject, true);
+    window.removeEventListener('current_view_changed', toggleOff, false);
+    window.removeEventListener('view_closed', toggleOff, false);
     methodObject.active = false;
     methodObject.macro.iconurl = methodObject.orig_iconurl;
     methodObject.macro.save();

History