From c5b9a676e7d649c2b499e15bd0d033fec1dc775f Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Mon, 27 Jul 2009 15:39:42 -0700 Subject: [PATCH] Prevent SDK Updater progress dialog from showing off screen. --- .../sdkuilib/internal/tasks/ProgressDialog.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/tasks/ProgressDialog.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/tasks/ProgressDialog.java index 12ef2cc34..ff79c68a3 100755 --- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/tasks/ProgressDialog.java +++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/tasks/ProgressDialog.java @@ -16,6 +16,7 @@ package com.android.sdkuilib.internal.tasks; +import com.android.sdklib.SdkConstants; import com.android.sdklib.internal.repository.ITaskMonitor; import org.eclipse.swt.SWT; @@ -46,6 +47,12 @@ import org.eclipse.swt.events.ShellEvent; */ final class ProgressDialog extends Dialog { + /** + * Min Y location for dialog. Need to deal with the menu bar on mac os. + */ + private final static int MIN_Y = SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_DARWIN ? + 20 : 0; + private static enum CancelMode { /** Cancel button says "Cancel" and is enabled. Waiting for user to cancel. */ ACTIVE, @@ -388,7 +395,13 @@ final class ProgressDialog extends Dialog { int cw = childSize.x; int ch = childSize.y; - child.setLocation(px + (pw - cw) / 2, py + (ph - ch) / 2); + int x = px + (pw - cw) / 2; + if (x < 0) x = 0; + + int y = py + (ph - ch) / 2; + if (y < MIN_Y) y = MIN_Y; + + child.setLocation(x, y); child.setSize(cw, ch); } }