Bug 93674 [Dialogs] ProgressMonitorDialog not cancellable when fork is set to false
Overview Description: Invoking the ProgressMonitorDialog::run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) method with the fork parameter set to false, the user can't cancel the running dialog -even if the cancelable parameter is set to true. Steps to Reproduce: Simply launch a ProgressMonitorDialog and invoke its run method with fork parameter == false and cancelable parameter == true Actual Results: The Cancel button is not responsive to user clicks and the IProgressMonitor::isCanceled() will always regardless. Expected Results: When the suer clicks the Cancel button on the dialog, calling IProgressMonitor::isCanceled() should return true so that the executing IRunnableWithProgress can have a chance to honour the user's request and exit.
bundles/org.eclipse.jface/src/org/eclipse/jface/window/ApplicationWindow.java
if (getToolBarControl() == w) {
                    if (!toolBarChildrenExist()) {
                        hide = true;
                        result.y += BAR_SIZE; 
                    }
                } else if (getCoolBarControl() == w) {
                    if (!coolBarChildrenExist()) {
                        hide = true;
                        result.y += BAR_SIZE;
                    }
                } else if (statusLineManager != null
                        && statusLineManager.getControl() == w) {
                } else if (i > 0) { 
                    hide = false;
                }
                if (!hide) {
                    Point e = w.computeSize(wHint, hHint, flushCache);
                    result.x = Math.max(result.x, e.x);
                    result.y += e.y + VGAP;
                }
            }
            if (wHint != SWT.DEFAULT)
                result.x = wHint;
            if (hHint != SWT.DEFAULT)
                result.y = hHint;
            return result;
        }
        protected void layout(Composite composite, boolean flushCache) {
            Rectangle clientArea = composite.getClientArea();
            Control[] ws = composite.getChildren();