Mudlet 4.4.0 现在不是崩溃而是复制/粘贴有时不起作用
这令人非常沮丧。
我在 Windows 10 上遇到此问题。它会偶尔停止工作,然后在几分钟后开始工作。 不清楚如何一致地繁殖,但发生的频率足以成为一个主要的麻烦。
我仍然在 4.5.1-de 下看到这个问题。
这令人非常沮丧。
我完全同意这一点。
确认此问题在 OSX 上的 4.6.2 中仍然存在。 这很奇怪,因为它也是特定于配置文件的。 一个配置文件将能够复制和粘贴,而另一个同时打开的配置文件将无法复制和粘贴。
很难解决这个问题,因为可以打开 Mudlet 并且它工作正常,那么如何找到问题呢? 复制问题的方法将通过堆推进
fwiw,当它被破坏时,副本作为 html 仍然有效。 也许这可能有助于缩小问题所在。
我也认为它是在这个 PR 被合并的时候开始的: https :
嗯,我们可以测试这个理论,试试https://github.com/Mudlet/Mudlet/pull/3688 中的测试版本
几天前在Win10上发现了类似的缺陷。
尝试测试构建,运行mudlet.exe
并查看当问题再次出现时终端中是否弹出任何内容。
嗯,目前我已经在运行并尝试下一个版本的候选版本,所以稍后会这样做。 无论如何,它之前只发生过一次(所以我注意到了),那时我运行 Mudlet 已经有一段时间了。 不知道如何复制。
@njs50 @Ranfir我发现了一种无需重新启动配置文件即可解决此问题的方法。 用这个做一个别名:
echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
echo("\nJust fill up the line with random gibberish!")
---etc, up to 1000 lines of the above echo
然后点击您的别名将 1000 行垃圾邮件发送到您的个人资料。 一击,您应该能够再次复制和粘贴! 我尝试使用 100 行别名,但这还不够,但是 1000 行成功了。
对我来说,这个错误在最近几周不再发生,但我们偶尔有 Discord 玩家报告了类似的情况。 他们似乎对上述解决方法感到满意,因此这可能有助于对错误进行三角测量。
在任何情况下,您都可以使用 lua 循环,而不是每个人在他们的别名中放置 1000 行垃圾邮件:
local repetitions = 1000
local i = 1
repeat
echo("\nJust fill up the line with random gibberish!")
i = i + 1
until i > repetitions
您甚至可以尝试重复次数,也许这会更有帮助? 目前 100 似乎很少,1000 似乎就足够了。 不确定,为什么以及在什么地方会发生变化。
:bulb: 嗯,IIRC 当前选择的详细信息存储在两个QPoint
s TConsole::P_begin
和P_end
- 但是当(void) TBuffer::shrinkBuffer()
开始修剪从TBuffer
的(std::deque<std::deque<TChar>>) buffer
和(QStringList) lineBuffer
以及一两个其他每行一个元素的容器开始的最旧(最低行号):采取了哪些步骤调整P_begin
和P_end
的y
值:问题:
我只注意到它发生在缓冲区变得足够长以缩小之后。 此外,当它发生时,似乎会导致顶部和底部缓冲区中的突出显示(当您在控制台中向上滚动时)彼此不同步。 在顶部和底部进行选择似乎有助于让复制功能再次工作,但我不能说它完全一致,因为它发生的频率不足以进行可靠的测试。
当常规副本停止工作时,“复制为 html”继续工作似乎真的很奇怪。 这似乎表明也许选择不是问题,而是选择中的问题?
我认为他们两个使用不同的算法。 这表明简单的复制可以从复制到 html 中学习一两个技巧。
复制为图像也仍然正确复制选择以及 iirc
有没有办法在不用 1000 行垃圾填充我的缓冲区的情况下执行 echo 技巧? 我想尝试一种解决方法,不包括破坏我也记录的完美游戏会话。
clearWindow 有用吗?
看起来它只对我有用。 不知道是不是巧合。 看起来像复制/粘贴将继续工作,直到东西开始从我的回滚结束逐出
我只是重复了一遍。 在执行 clearWindow() 直到缓冲区已满之前,复制/粘贴看起来不错。 当我复制一些飞过它的文本时它已满,它就会失败并停止工作。 clearWindow 再次修复它。
我也填满了我的游戏缓冲区,直到行开始在顶部消失。
当时,复制/粘贴仍然按预期工作正常。
你如何准确地填充你的缓冲区?
我尝试将控制台缓冲区大小的批量删除数降低到 10,虽然这确实会导致批量删除时出现奇怪的文本显示的副作用,但它似乎加快了修复复制问题的过程。
我也填满了我的游戏缓冲区,直到行开始在顶部消失。
当时,复制/粘贴仍然按预期工作正常。
你如何准确地填充你的缓冲区?
当时我正在用正在运行的游戏对其进行测试。 我通过在记事板上浏览一堆笔记来填充大部分内容,当我注意到文本再次从缓冲区顶部删除时,我做了一个新选择。
在我选择复制的整个过程中肯定会有文字出现。
当我复制时,我也肯定会回滚。 即我已将选择拖到足够远以离开当前文本页面。
从上下文菜单中使用 Ctrl-C(复制):
(void) TTextEdit::slot_copySelectionToClipboard()
(QString) TTextEdit::getSelectedText(char newlineChar)
- 使用(QPoint) TTextEdit::mPA
和mpB
的当前值并将文本放入QApplication::clipboard()
从上下文菜单中使用 Copy as HTML:
(void) TTextEdit::slot_copySelectionToClipboardHTML()
- 使用(QPoint) TTextEdit::mDragStart
和mDragSelectionEnd
来设置TTextEdit::mPA
和mpB
,然后立即使用后者复制数据TBuffer
到生成的 HTML 中。将选择过程从后者复制到前者可能值得尝试......
最有用的评论
@njs50 @Ranfir我发现了一种无需重新启动配置文件即可解决此问题的方法。 用这个做一个别名:
然后点击您的别名将 1000 行垃圾邮件发送到您的个人资料。 一击,您应该能够再次复制和粘贴! 我尝试使用 100 行别名,但这还不够,但是 1000 行成功了。