OSDN Git Service

ui: Fix Rect::reduce
authorPablo Ceballos <pceballos@google.com>
Thu, 10 Mar 2016 01:19:22 +0000 (17:19 -0800)
committerPablo Ceballos <pceballos@google.com>
Thu, 10 Mar 2016 01:19:22 +0000 (17:19 -0800)
- Properly handle the case where the Rect to be excluded is completely
  outside the other Rect.

Bug 27415039

Change-Id: I3331d5b3ab231d023348079c781b194d24ac37dd

libs/ui/Rect.cpp

index 99cbedc..d8702e5 100644 (file)
@@ -127,13 +127,13 @@ Rect Rect::reduce(const Rect& exclude) const {
         if (!(mask & (mask - 1))) {
             // power-of-2, i.e.: just one bit is set
             if (mask & 1) {
-                result.right = exclude.left;
+                result.right = min(result.right, exclude.left);
             } else if (mask & 2) {
-                result.bottom = exclude.top;
+                result.bottom = min(result.bottom, exclude.top);
             } else if (mask & 4) {
-                result.left = exclude.right;
+                result.left = max(result.left, exclude.right);
             } else if (mask & 8) {
-                result.top = exclude.bottom;
+                result.top = max(result.top, exclude.bottom);
             }
         }
     }