ProgressMonitorDialog 构造函数中是否存在错误?

Is there a bug in the ProgressMonitorDialog constructor?

当我创建 ProgressMonitorDialog 的新实例时,它忽略了内部 shell 样式和 setBlockOnOpen。我什至不确定 how/why 这是否会发生。标题栏中的关闭按钮不起作用(我认为这是一个错误),但取消按钮工作正常。有没有其他人遇到过这个问题或者是什么奇怪的事情触发了它的不同行为?

我的代码:

ProgressMonitorDialog pmd = new ProgressMonitorDialog(shell);
pmd.run(true, true, new MyOperation());

构造函数的源代码:

public ProgressMonitorDialog(Shell parent) {
    super(parent);
    // no close button on the shell style
    if (isResizable()) {
        setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
                | SWT.APPLICATION_MODAL | SWT.RESIZE | SWT.MAX);
    } else {
        setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
                | SWT.APPLICATION_MODAL);
    }
    setBlockOnOpen(false);
}

我在标题栏中看到的内容:

这几乎可以肯定是平台相关的(Mac、Linux、Windows...)。并非所有平台都支持没有关闭按钮,最好的办法是禁用它。