Ignore Screens with a width or height of 0
authorRX14 <chris@rx14.co.uk>
Wed, 3 Feb 2016 19:37:44 +0000 (19:37 +0000)
committerRX14 <chris@rx14.co.uk>
Wed, 3 Feb 2016 19:37:44 +0000 (19:37 +0000)
Fixes IDEA-151060.

platform/platform-api/src/com/intellij/ui/ScreenUtil.java

index ccd1eac11fc453ff0b56178ffdbf8eceeb9e4389..63a159bca2e7e46afce6cfeb8d3941965a46e47d 100644 (file)
@@ -251,13 +251,25 @@ public class ScreenUtil {
     }
     Rectangle bounds = rectangles[0];
     int minimum = distance(bounds, x, y);
+    if (bounds.width == 0 || bounds.height == 0) {
+      //Screen is invalid, give maximum score
+      minimum = Integer.MAX_VALUE;
+    }
     for (int i = 1; i < rectangles.length; i++) {
+      if (rectangles[i].width == 0 || rectangles[i].height == 0) {
+        //Screen is invalid
+        continue;
+      }
       int distance = distance(rectangles[i], x, y);
       if (minimum > distance) {
         minimum = distance;
         bounds = rectangles[i];
       }
     }
+    if (bounds.width == 0 || bounds.height == 0) {
+      //All screens were invalid, return sensible default
+      return new Rectangle(x, y, 0, 0);
+    }
     return bounds;
   }