< prev index next >

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

Print this page

        

@@ -125,10 +125,20 @@
     if ((refs = --m_refs) == 0) delete this;
 
     return (ULONG)refs;
 }
 
+void ScaleDown(POINT &cp, HWND m_window) {
+    int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(m_window);
+    Devices::InstanceAccess devices;
+    AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
+    if (device) {
+        cp.x = device->ScaleDownX(cp.x);
+        cp.y = device->ScaleDownY(cp.y);
+    }
+}
+
 /**
  * DragEnter
  */
 
 HRESULT __stdcall AwtDropTarget::DragEnter(IDataObject __RPC_FAR *pDataObj, DWORD grfKeyState, POINTL pt, DWORD __RPC_FAR *pdwEffect) {

@@ -174,10 +184,11 @@
 
         ::GetWindowRect(m_window, &wr);
 
         cp.x = pt.x - wr.left;
         cp.y = pt.y - wr.top;
+        ScaleDown(cp, m_window);
 
         jint actions = call_dTCenter(env, m_dtcp, m_target,
                                      (jint)cp.x, (jint)cp.y,
                                      ::convertDROPEFFECTToActions(mapModsToDROPEFFECT(*pdwEffect, grfKeyState)),
                                      ::convertDROPEFFECTToActions(*pdwEffect),

@@ -235,10 +246,11 @@
 
     ::GetWindowRect(m_window, &wr);
 
     cp.x = pt.x - wr.left;
     cp.y = pt.y - wr.top;
+    ScaleDown(cp, m_window);
 
     actions = call_dTCmotion(env, m_dtcp, m_target,(jint)cp.x, (jint)cp.y,
                              ::convertDROPEFFECTToActions(mapModsToDROPEFFECT(*pdwEffect, grfKeyState)),
                              ::convertDROPEFFECTToActions(*pdwEffect),
                              m_cfFormats, (jlong)this);

@@ -334,10 +346,11 @@
 
     ::GetWindowRect(m_window, &wr);
 
     cp.x = pt.x - wr.left;
     cp.y = pt.y - wr.top;
+    ScaleDown(cp, m_window);
 
     m_dropActions = java_awt_dnd_DnDConstants_ACTION_NONE;
 
     call_dTCdrop(env, m_dtcp, m_target, (jint)cp.x, (jint)cp.y,
                  ::convertDROPEFFECTToActions(mapModsToDROPEFFECT(*pdwEffect, grfKeyState)),
< prev index next >