[538380] P2 dialogs opened during self-update deadlock the UI
https://bugs.eclipse.org/bugs/show_bug.cgi?id=538380
diff --git a/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/internal/ui/P2ServiceUI.java b/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/internal/ui/P2ServiceUI.java
index 6c08dc8..eaa2169 100644
--- a/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/internal/ui/P2ServiceUI.java
+++ b/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/internal/ui/P2ServiceUI.java
@@ -23,6 +23,7 @@
import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider;
import org.eclipse.equinox.p2.core.UIServices;
import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
+import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ILabelProvider;
@@ -286,6 +287,16 @@
result[0] = (Shell)parent;
}
}
+
+ // During a self-update, there will be a progress dialog and if it's not the parent of any created dialog, that dialog will be unusable.
+ for (Shell child : result[0].getShells())
+ {
+ if (child.isVisible() && child.getData() instanceof Dialog)
+ {
+ result[0] = child;
+ break;
+ }
+ }
}
});
}