我遇到了SWT子shell在不同操作系统上的行为方式的问题。在Windows上,当我单击子shell的最小化按钮时,只有该shell将被最小化,即调整大小/停靠在屏幕的左下角(这是首选行为)。在Linux中,子shell最小化到任务栏(这不是一个真正的问题)。但是,在Mac OS X 10.5中,最小化子shell将导致父窗口最小化(这是一个问题)。
只需将父元素作为构造函数参数传递即可创建子shell,例如:
Shell editor = new Shell(Display.getCurrent().getActiveShell());
非常感谢任何帮助。
答案 0 :(得分:0)
假设在不同平台上存在不同的窗口管理行为,可能不是SWT的错误 - 你能保证getActiveShell
总是返回公共父shell吗?
另一个解决方案就是隐藏子shell - 应该在每个平台上都相同,但可能不适合您的应用程序。
无论如何,我看到很多替换多个子shell的选项。也许TabFolder
或ExpandBar
可能适合这份工作?在widgets page获取概述。
如果无法使用这些选项,您可以contact SWT项目。也许开发人员可以帮助您完成Mac OS实施的内部工作。一个非常激进的(从正常的观点来看,不必要的)步骤将移植到Swing。