Как отключить перетаскивание текста в Notepad++

У меня сенсорный экран, и мне неудобно иметь возможность перетаскивания в Notepad++ для меня. Я никогда не использовал drag-drop. Но я не могу найти, как это отключить, это вообще возможно? Я говорю о перетаскивании текста, единственный параметр, который я мог найти в настройках, связан с перетаскиванием панели вкладок.

0 ответов

TL;DR: сборкаNotepad++от сюда

Примечание: этот вопрос задавали здесь и здесь. Существует также запрос на повышение здесь, который остается открытым..

Запрос на улучшение был закрыт, и вот причина, указанная разработчиком здесь:

За исключением того, что Scintilla делает его необязательным, он не может поддерживаться в Notepad++. Я рекомендую вам сделать запрос функции в проекте Scintilla

Если кто-то строит Notepad++ из источника, я предлагаю следующие обходные пути.

Компонент редактора Scintilla в Notepad++фактически отвечает за функцию перетаскивания (это можно подтвердить с помощью SciTE). Таким образом, один из способов отключить эту функцию - изменить исходный код, используемый для созданияSciLexer.dll здесь.

После отладки Notepad++ в Visual Studio, я обнаружил, что эта функция ButtonMoveWithModifiers под Editor.cxx отвечает за функцию перетаскивания. В частности, этот фрагмент кода:


    if (inDragDrop == ddInitial) {
        if (DragThreshold(ptMouseLast, pt)) {
            SetMouseCapture(false);
            FineTickerCancel(tickScroll);
            SetDragPosition(movePos);
            CopySelectionRange(&drag);
            StartDrag();
        }
        return;
    }

Итак, комментируя результаты блока кода к этому

/*
if (inDragDrop == ddInitial) {
        if (DragThreshold(ptMouseLast, pt)) {
            SetMouseCapture(false);
            FineTickerCancel(tickScroll);
            SetDragPosition(movePos);
            CopySelectionRange(&drag);
            StartDrag();
        }
        return;
    }
*/

С одним этим изменением в исходном коде создайте новый SciLexer.dll. Вы можете сохранить предыдущую сборку dll в качестве резервной на тот случай, если вы захотите вернуться к функции перетаскивания.

Однако, если вы не строите Notepad++ из исходного кода и предпочитаете установку через исполняемый файл, затем запишите текущую версию вашего Notepad++ и загрузите исходный код scintilla для того же.

Итак, если ваш Notepad++версия v7.xx, тогда URL, указывающий на источник scintilla, будет:

https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x/scintilla

Для того, чтобы загрузить одну папку или каталог, следуйте этим, или просто скачать по этой ссылке:

https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x/scintilla 

(на основе ответа здесь)

Измените Editor.cxx как упоминалось ранее, и создайте новую dll в соответствии с указанным здесь руководством:

https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x

Примечание: замените v7.xx своей версией NPP.

Обновление: указанный выше метод не работает для версий выпуска АЭС> = v7.3.3, из-за этого "Fix CIA Hacking Notepad++" проблема исправлена ​​в версии 7.3.3 и выше. Это потому, чтоSciLexer.dll имеет цифровую подпись автора проекта NPP, поэтому, если dll подделана, то Notepad++ будет жаловаться, говоря:

Ошибка проверки библиотеки - Ошибка проверки подлинности: подпись или сертификат подписи не распознаются.

Источник


Вот разветвленный репозиторий с внесенными за вас изменениями, просто соберите Notepad++ отсюда.

(Он должен автоматически синхронизироваться с родительским репозиторием из-за этого приложения, однако, если это не связано с каким-либо конфликтом, я синхронизирую его вручную, как указано здесь)

Примечание. Для синхронизации указанного выше разветвленного репозитория с родительским репозиторием использовалось приложение Pull Github. Вотpull.ymlиспользуется для настройки разветвленного репозитория:

version: "1"
rules:
  - base: feature
    upstream: master
    mergeMethod: merge
  - base: master
    upstream: notepad-plus-plus:master
    mergeMethod: hardreset

Это позволяет поддерживать главную ветвь разветвленного репозитория в актуальном состоянии с родительским репозиторием. Он также поддерживает обновление функциональной ветви разветвленного репозитория (который содержит изменения) через главную ветвь разветвленного репозитория путем их слияния.

Если Notepad++ Сообщество когда-либо решает добавить или настроить эту функцию, запрос на вытягивание, созданный этим приложением, должен привести к конфликту слияния.


Примечание. Если вы столкнулись с какими-либо проблемами, связанными с сертификатом, при запуске версии конфигурации выпускаNotepad++из источника, обратитесь к этому.

Другие вопросы по тегам