预检清单
- 我已阅读了此项目的 Contributing Guidelines。
- 我同意遵循此项目遵循的 Code of Conduct。
- 在问题跟踪器中搜索了一个与我想提交的功能请求相匹配的问题,但没有成功。
问题描述
(仅限macOS)
在 #24956 之前, setVisibleOnAllWorkspaces
只运行 SetCollectionBehavior(visible, NSWindowCollectionBehaviorCanJoinAllSpaces);
,并未修改进程类型。在 PR 24956 之后,进程类型也发生了变化。这是有道理的--如果开发者使用 Electron,否则他们必须手动隐藏/显示dock,这不符合直觉。
然而,这个改变也导致了一些dock的bug,影响了其他窗口的可见性。在此更改之前,您可以快速将窗口固定到工作区,而在此更改之后,您的dock可能会隐藏/显示,您的其他窗口可能会被隐藏。我为这个问题找到的解决方法比我在更改之前能够创建的行为更糟糕。
这种行为使 PR 24956 成为破坏性更改。
建议的解决方案
在 setVisibleOnAllWorkspaces 上将 TransformProcessType
调用设置为可选的,默认为 true
可以解决这个问题,同时仍然允许基本的使用此函数保持直观(无需手动dock显示/隐藏)。
考虑的其他方案
或者,公开 SetCollectionBehavior
可以允许复制更改之前 setVisibleOnAllWorkspaces
所具有的行为。我不确定这需要多少工作,但我认为这个选项也是不错的。
其他信息
一个当前行为可能导致问题的示例(注意dock行为,在使用 setVisibleOnAllWorkspaces
时其中一个窗口丢失,更改之前并非如此): https://github.com/CyrusRoshan/electron-example
5条答案
按热度按时间smtd7mpg1#
我无法使
npm test
运行,但我已经在 a commit 上安装了 this branch ,我认为这应该可以工作。4jb9z9bj2#
需要这个!我如何使用你们的electron分支?我找不到相关信息。
我尝试了:
npm install --save-dev CyrusRoshan/electron#63ffaa4
,但它在sh: check-for-leaks: command not found
上失败了。nue99wik3#
@vcombey 我不确定通过npm是否可行,但看起来这里的
dist
文件夹包含了构建好的Electron二进制文件:https://app.circleci.com/pipelines/github/electron/electron/34419/workflows/eae4dcc8-0cbf-4632-b47d-a9bcf4f05eb7/jobs/755075/artifacts其他架构的构建产物在这里找到:https://github.com/electron/electron/pull/27200/checks?check_run_id=1653016997
llycmphe4#
嘿,@CyrusRoshan,看起来你的PR将通过跳过TransformProcessType来解决这个问题,但我在等待发布的同时,想知道你是否可以分享一些解决方法?
我遇到了这个问题,在将一个“子”窗口设置为可见于所有工作区后,整个应用程序实际上从文档中被移除,尽管它仍然打开🙈 如果有任何帮助或指导,我将不胜感激👍
cczfrluj5#
感谢你关注这个问题,@CyrusRoshan!
我们遇到了一个相关的问题:
我们的应用程序设置了
LSUIElement
(以隐藏菜单栏应用程序,使其无法通过命令选项卡切换器和停靠区显示),而 TransformProcessType 调用正在覆盖它。然而,在 #27200 中存在一个错误,导致新的
skipTransformProcessType
选项总是被忽略:args->GetNext(&options)
被调用了两次,而第二次它总是返回 false(在读取skipTransformProcessType
选项之前),因为每次对GetNext
的调用都会改变args
。我在提交中添加了评论:444ad26#r49178546