如何禁用Notepad ++中的文本拖放

时间:2013-12-20 09:48:12

标签: notepad++

我有一个触摸屏,在Notepad ++中为我启用拖放是不方便的。无论如何我从未使用过拖放。但我找不到如何禁用它,这有可能吗?我说的是文本拖放,我在设置中找到的唯一选项与标签栏的拖放有关。

1 个答案:

答案 0 :(得分:4)

TL; DR:here构建Notepad++

注意:有人问herehere这个问题。还有一个增强请求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检查失败:签名或签名证书未被识别。

Source


这是一个为您完成更改的分支存储库,只需从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