在记事本++中禁用文本拖放 [英] Disabling drag-and-drop of text in Notepad++
问题描述
我有触摸屏,这给我在Notepad++中启用拖放功能带来了不便。我从来没有使用过拖放功能。
但是,我找不到如何在Notepad++中禁用文本拖放。是否可以禁用此功能?请注意,我说的是文本拖放。我在应用程序设置中找到的唯一选项与选项卡栏的拖放相关。
推荐答案
TL;DR:内部版本Notepad++
来源here
注意:此问题被问到here和here。还有一个仍未解决的增强请求here。。
增强请求已关闭,开发者声明的原因如下here:
除非Sintilla将其设置为可选,否则它在中不受支持 记事本++。我建议您在Scintilla project中完成功能请求
如果要从源代码构建Notepad++
,则我建议使用以下解决方法。
ScretillaNotepad++
中的编辑器组件实际上负责拖放功能(可以使用SciTE确认)。因此,禁用此功能的一种方法是修改用于构建SciLexer.dll
here的源代码。
在Visual Studio中调试Notepad++
项目时,我发现Editor.cxx
下的ButtonMoveWithModifiers
函数负责拖放功能。
特别是this代码片段:
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++
的当前版本,并下载相同的Scretilla源代码。
因此,如果您的Notepad++
版本是v7.x.x,则指向闪烁源的URL将为:
https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x/scintilla
要下载单个文件夹或目录,请遵循this,或使用此链接直接下载:
https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x/scintilla
(基于答案here)
如前所述修改Editor.cxx
,并按照此处指定的指导构建新的DLL:
https://github.com/notepad-plus-plus/notepad-plus-plus/tree/v7.x.x
注意:将v7.x.x替换为您的NPP版本
更新:以上方法不适用于NPP发行版本>=v7.3.3,因为此"Fix CIA Hacking Notepad++"
问题已在v7.3.3及更高版本中修复。这是因为SciLexer.dll
是由NPP项目的作者数字签名的,所以如果DLL被篡改,那么Notepad++
会投诉说:
库验证失败-Authenticode检查失败:签名或签名证书无法识别。
这是一个包含为您完成的更改的分叉存储库,只需从here构建Notepad++即可。
(因此它应该会自动与父存储库同步app但是,如果由于某些冲突而没有同步,我将按照指定的here手动同步)
注意:要使上述派生存储库与父存储库保持同步,请使用Pull Github App。下面是用于配置派生存储库的pull.yml
:
version: "1"
rules:
- base: feature
upstream: master
mergeMethod: merge
- base: master
upstream: notepad-plus-plus:master
mergeMethod: hardreset
这将使派生存储库的主分支与父存储库保持同步。它还通过合并派生存储库的主分支来保持派生存储库的功能分支(,其中包含更改)的更新。
如果Notepad++
社区决定添加或调整此功能,则此应用程序生成的拉取请求将导致合并冲突。
注意:如果您在从源运行Notepad++
的发布配置版本时遇到任何与证书相关的问题,请参阅this。
这篇关于在记事本++中禁用文本拖放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!