我有一个触摸屏,在Notepad ++中为我启用拖放是不方便的。无论如何我从未使用过拖放。但我找不到如何禁用它,这有可能吗?我说的是文本拖放,我在设置中找到的唯一选项与标签栏的拖放有关。
答案 0 :(得分:4)
TL; DR:从here构建Notepad++
注意:有人问here和here这个问题。还有一个增强请求here仍处于打开状态。
如果有人从源头构建Notepad++
,那么我建议采用以下解决方法。
Notepad++
中的Scintilla的编辑器组件实际上负责拖放功能(可以通过使用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++
的当前版本并下载scintilla源代码。
因此,如果您的Notepad++
版本是 v7.x.x ,则指向scintilla源的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
注意: 用您的NPP版本替换v7.x.x
更新:上述方法不适用于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
这将使派生存储库的master分支与父存储库保持最新。通过合并,通过叉形存储库的主分支还可以使叉形存储库的功能分支(包含更改的 )保持更新。
如果Notepad++
社区曾经决定添加或调整此功能,则此应用生成的请求请求将导致合并冲突。
注意::如果从源运行Notepad++
的发行配置版本时遇到任何与证书相关的问题,请参阅this。