< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsConfig.cpp

Print this page

        

@@ -93,23 +93,35 @@
     clazz = env->FindClass("java/awt/Rectangle");
     CHECK_NULL_RETURN(clazz, NULL);
     mid = env->GetMethodID(clazz, "<init>", "(IIII)V");
     if (mid != 0) {
         RECT rRW = {0, 0, 0, 0};
+        Devices::InstanceAccess devices;
+        AwtWin32GraphicsDevice *device = devices->GetDevice(screen);
+
         if (TRUE == MonitorBounds(AwtWin32GraphicsDevice::GetMonitor(screen), &rRW)) {
-            bounds = env->NewObject(clazz, mid,
-                                    rRW.left, rRW.top,
-                                    rRW.right - rRW.left,
-                                    rRW.bottom - rRW.top);
+
+            int x = (device == NULL) ? rRW.left : device->ScaleDownX(rRW.left);
+            int y = (device == NULL) ? rRW.top  : device->ScaleDownY(rRW.top);
+            int w = (device == NULL) ? rRW.right - rRW.left
+                                     : device->ScaleDownX(rRW.right - rRW.left);
+            int h = (device == NULL) ? rRW.bottom - rRW.top
+                                     : device->ScaleDownY(rRW.bottom - rRW.top);
+
+            bounds = env->NewObject(clazz, mid, x, y, w, h);
+
         }
         else {
             // 4910760 - don't return a null bounds, return the bounds of the
             // primary screen
+            int w = ::GetSystemMetrics(SM_CXSCREEN); 
+            int h = ::GetSystemMetrics(SM_CYSCREEN); 
+
             bounds = env->NewObject(clazz, mid,
                                     0, 0,
-                                    ::GetSystemMetrics(SM_CXSCREEN),
-                                    ::GetSystemMetrics(SM_CYSCREEN));
+                                    device == NULL ? w : device->ScaleDownX(w),
+                                    device == NULL ? h : device->ScaleDownY(h));
         }
         if (safe_ExceptionOccurred(env)) {
            return 0;
         }
     }
< prev index next >