在记事本++中禁用文本拖放 [英] Disabling drag-and-drop of text in Notepad++

查看:15
本文介绍了在记事本++中禁用文本拖放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有触摸屏,这给我在Notepad++中启用拖放功能带来了不便。我从来没有使用过拖放功能。

但是,我找不到如何在Notepad++中禁用文本拖放。是否可以禁用此功能?

请注意,我说的是文本拖放。我在应用程序设置中找到的唯一选项与选项卡栏的拖放相关。

推荐答案

TL;DR:内部版本Notepad++来源here

注意:此问题被问到herehere还有一个仍未解决的增强请求here

增强请求已关闭,开发者声明的原因如下here

除非Sintilla将其设置为可选,否则它在中不受支持 记事本++。我建议您在Scintilla project

中完成功能请求

如果要从源代码构建Notepad++,则我建议使用以下解决方法。

ScretillaNotepad++中的编辑器组件实际上负责拖放功能(可以使用SciTE确认)。因此,禁用此功能的一种方法是修改用于构建SciLexer.dllhere的源代码。

在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检查失败:签名或签名证书无法识别。

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
这将使派生存储库的主分支与父存储库保持同步。它还通过合并派生存储库的主分支来保持派生存储库的功能分支(,其中包含更改)的更新。

如果Notepad++社区决定添加或调整此功能,则此应用程序生成的拉取请求将导致合并冲突。


注意:如果您在从源运行Notepad++的发布配置版本时遇到任何与证书相关的问题,请参阅this

这篇关于在记事本++中禁用文本拖放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆