[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;
+              }
+            }
           }
         });
       }