2015-06-18 2 views
0

Я пытаюсь отключить все взаимодействие с пользователем с редактором туза. Мне удалось остановить большинство взаимодействий со следующими параметрами:Как отключить выбор строки на щелчке водостока в редакторе ACE?

codeEditor.setReadOnly(true); 
codeEditor.setHighlightActiveLine(false); 
codeEditor.setHighlightGutterLine(false); 
codeEditor.container.style.pointerEvents = "none"; 
codeEditor.renderer.$cursorLayer.element.style.opacity = 0; 

Однако, в то время как большая часть интерактивности теперь отключена, MouseDown событий канаву все еще работают. Например, когда вы нажимаете на линию желоба, она по-прежнему выбирает текст в этой строке. Другие действия, такие как двойной щелчок для выбора всего или сгибание кода, также работают. Вы можете проверить его здесь: http://jsfiddle.net/squarePenguin/zhpms1mm/

Я попытался удалить слушателей на желобе, но ничего не работает. Это все, что я пробовал:

codeEditor.getSession().removeAllListeners("guttermousedown"); 
codeEditor.getSession().removeAllListeners("gutterclick"); 
codeEditor.getSession().removeAllListeners("gutterdblclick"); 
codeEditor.getSession().removeAllListeners("guttermousemove"); 
codeEditor.getSession().removeAllListeners("click"); 
codeEditor.getSession().removeAllListeners("mousedown"); 

У вас есть идея? Спасибо за ваше терпение!

ответ

1

Вы можете сделать это с

stop = function(e) {e.stop()} 
editor.on("guttermousedown", stop, true); 
editor.on("gutterclick", stop, true); 
editor.on("gutterdblclick", stop, true); 
editor.on("guttermousemove", stop, true); 
editor.on("click", stop, true); 
editor.on("mousedown", stop, true); 

codeEditor.getSession().removeAllListeners не работает, поскольку события мыши отправляются на редактор не сессии, и removeAllListeners не удаляет defaultHandlers

codeEditor.container.style.pointerEvents = "none"; не работает, потому что некоторые элементы в тузе есть pointerEvents="auto" стиль.