< prev index next >

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

Print this page
rev 58018 : 8238575: DragSourceEvent.getLocation() returns wrong value on HiDPI screens (Windows)
Reviewed-by: XXX
   1 /*
   2  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 265     ::GetCursorPos(&dragSource->m_dragPoint);
 266 
 267     dragSource->Signal();
 268 
 269     AwtToolkit &toolkit = AwtToolkit::GetInstance();
 270     toolkit.isInDoDragDropLoop = TRUE;
 271     res = ::DoDragDrop(dragSource,
 272                        dragSource,
 273                        convertActionsToDROPEFFECT(dragSource->m_actions),
 274                        &effects
 275           );
 276     toolkit.isInDoDragDropLoop = FALSE;
 277 
 278     if (effects == DROPEFFECT_NONE && dragSource->m_dwPerformedDropEffect != DROPEFFECT_NONE) {
 279         effects = dragSource->m_dwPerformedDropEffect;
 280     }
 281     dragSource->m_dwPerformedDropEffect = DROPEFFECT_NONE;
 282 
 283     call_dSCddfinished(env, peer, res == DRAGDROP_S_DROP && effects != DROPEFFECT_NONE,
 284                        convertDROPEFFECTToActions(effects),
 285                        dragSource->m_dragPoint.x, dragSource->m_dragPoint.y);
 286 
 287     env->DeleteLocalRef(peer);
 288 
 289     DASSERT(AwtDropTarget::IsCurrentDnDDataObject(dragSource));
 290     AwtDropTarget::SetCurrentDnDDataObject(NULL);
 291 
 292     PictureDragHelper::Destroy();
 293     dragSource->Release();
 294 }
 295 
 296 /**
 297  * constructor
 298  */
 299 
 300 AwtDragSource::AwtDragSource(JNIEnv* env, jobject peer, jobject component,
 301                              jobject transferable, jobject trigger,
 302                              jint actions, jlongArray formats,
 303                              jobject formatMap) {
 304     m_peer      = env->NewGlobalRef(peer);
 305 


 632  * QueryContinueDrag
 633  */
 634 
 635 HRESULT __stdcall  AwtDragSource::QueryContinueDrag(BOOL fEscapeKeyPressed, DWORD grfKeyState) {
 636     AwtToolkit::GetInstance().eventNumber++;
 637     TRY;
 638 
 639     JNIEnv* env       = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 640 
 641     if (fEscapeKeyPressed)
 642         return DRAGDROP_S_CANCEL;
 643 
 644     jint modifiers = AwtComponent::GetJavaModifiers();
 645 
 646     POINT dragPoint;
 647 
 648     ::GetCursorPos(&dragPoint);
 649 
 650     if ( (dragPoint.x != m_dragPoint.x || dragPoint.y != m_dragPoint.y) &&
 651          m_lastmods == modifiers) {//cannot move before cursor change
 652         call_dSCmouseMoved(env, m_peer,
 653                            m_actions, modifiers, dragPoint.x, dragPoint.y);
 654         JNU_CHECK_EXCEPTION_RETURN(env, E_UNEXPECTED);
 655         m_dragPoint = dragPoint;
 656     }
 657 
 658     if ((modifiers & JAVA_BUTTON_MASK) == 0) {
 659         return DRAGDROP_S_DROP;
 660     } else if (m_initmods == 0) {
 661         m_initmods = modifiers;
 662     } else if ((modifiers & JAVA_BUTTON_MASK) != (m_initmods & JAVA_BUTTON_MASK)) {
 663         return DRAGDROP_S_CANCEL;
 664     } else if (m_lastmods != modifiers) {
 665         call_dSCchanged(env, m_peer,
 666                         m_actions, modifiers, dragPoint.x, dragPoint.y);
 667         m_bRestoreNodropCustomCursor = TRUE;
 668     }
 669 
 670     m_lastmods = modifiers;
 671 
 672     //CR 6480706 - MS Bug on hold
 673     HCURSOR hNeedCursor;
 674     if (
 675         m_bRestoreNodropCustomCursor &&
 676         m_cursor != NULL &&
 677         (hNeedCursor = m_cursor->GetHCursor()) != ::GetCursor() )
 678     {
 679         ChangeCursor();
 680         m_bRestoreNodropCustomCursor = FALSE;
 681     }
 682     return S_OK;
 683 
 684    CATCH_BAD_ALLOC_RET(E_OUTOFMEMORY);
 685 }
 686 


 709     if (::GetKeyState(VK_SHIFT)   & 0xff00)
 710         mods |= MK_SHIFT;
 711     if (::GetKeyState(VK_CONTROL) & 0xff00)
 712         mods |= MK_CONTROL;
 713     if (::GetKeyState(VK_MENU) & 0xff00)
 714         mods |= MK_ALT;
 715 
 716     modifiers = AwtComponent::GetJavaModifiers();
 717 
 718     POINT curs;
 719 
 720     ::GetCursorPos(&curs);
 721 
 722     m_droptarget = ::WindowFromPoint(curs);
 723 
 724     int invalid = (dwEffect == DROPEFFECT_NONE);
 725 
 726     if (invalid) {
 727         // Don't call dragExit if dragEnter and dragOver haven't been called.
 728         if (!m_enterpending) {
 729             call_dSCexit(env, m_peer, curs.x, curs.y);
 730         }
 731         m_droptarget = (HWND)NULL;
 732         m_enterpending = TRUE;
 733     } else if (m_droptarget != NULL) {
 734         (*(m_enterpending ? call_dSCenter : call_dSCmotion))
 735             (env, m_peer, m_actions, modifiers, curs.x, curs.y);
 736 
 737         m_enterpending = FALSE;
 738     }
 739 
 740     if (m_droptarget != NULL) {
 741         RECT  rect;
 742         POINT client = curs;
 743         VERIFY(::ScreenToClient(m_droptarget, &client));
 744         VERIFY(::GetClientRect(m_droptarget, &rect));
 745         if (::PtInRect(&rect, client)) {
 746             m_fNC = FALSE;
 747             m_dropPoint = client;
 748         } else {
 749             m_fNC = TRUE;
 750             m_dropPoint = curs;
 751         }
 752     } else {
 753         m_fNC = TRUE;
 754         m_dropPoint.x = 0;
 755         m_dropPoint.y = 0;


1159     DWORD id = ::CoGetCurrentProcess();
1160 
1161     HGLOBAL copy = ::GlobalAlloc(GALLOCFLG, sizeof(id));
1162 
1163     if (copy == NULL) {
1164         throw std::bad_alloc();
1165     }
1166 
1167     char *dataout = (char *)::GlobalLock(copy);
1168 
1169     memcpy(dataout, &id, sizeof(id));
1170     ::GlobalUnlock(copy);
1171 
1172     pmedium->tymed = TYMED_HGLOBAL;
1173     pmedium->hGlobal = copy;
1174     pmedium->pUnkForRelease = (IUnknown *)NULL;
1175 
1176     return S_OK;
1177 }
1178 











1179 DECLARE_JAVA_CLASS(dSCClazz, "sun/awt/windows/WDragSourceContextPeer")
1180 
1181 void
1182 AwtDragSource::call_dSCenter(JNIEnv* env, jobject self, jint targetActions,
1183                              jint modifiers, jint x, jint y) {

1184     DECLARE_VOID_JAVA_METHOD(dSCenter, dSCClazz, "dragEnter", "(IIII)V");
1185     DASSERT(!JNU_IsNull(env, self));
1186     env->CallVoidMethod(self, dSCenter, targetActions, modifiers, x, y);
1187     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1188         env->ExceptionDescribe();
1189         env->ExceptionClear();
1190     }
1191 }
1192 
1193 void
1194 AwtDragSource::call_dSCmotion(JNIEnv* env, jobject self, jint targetActions,
1195                               jint modifiers, jint x, jint y) {

1196     DECLARE_VOID_JAVA_METHOD(dSCmotion, dSCClazz, "dragMotion", "(IIII)V");
1197     DASSERT(!JNU_IsNull(env, self));
1198     env->CallVoidMethod(self, dSCmotion, targetActions, modifiers, x, y);
1199     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1200         env->ExceptionDescribe();
1201         env->ExceptionClear();
1202     }
1203 }
1204 
1205 void
1206 AwtDragSource::call_dSCchanged(JNIEnv* env, jobject self, jint targetActions,
1207                                jint modifiers, jint x, jint y) {

1208     DECLARE_VOID_JAVA_METHOD(dSCchanged, dSCClazz, "operationChanged",
1209                              "(IIII)V");
1210     DASSERT(!JNU_IsNull(env, self));
1211     env->CallVoidMethod(self, dSCchanged, targetActions, modifiers, x, y);
1212     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1213         env->ExceptionDescribe();
1214         env->ExceptionClear();
1215     }
1216 }
1217 
1218 void
1219 AwtDragSource::call_dSCexit(JNIEnv* env, jobject self, jint x, jint y) {

1220     DECLARE_VOID_JAVA_METHOD(dSCexit, dSCClazz, "dragExit", "(II)V");
1221     DASSERT(!JNU_IsNull(env, self));
1222     env->CallVoidMethod(self, dSCexit, x, y);
1223     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1224         env->ExceptionDescribe();
1225         env->ExceptionClear();
1226     }
1227 }
1228 
1229 void
1230 AwtDragSource::call_dSCddfinished(JNIEnv* env, jobject self, jboolean success,
1231                                   jint operations, jint x, jint y) {

1232     DECLARE_VOID_JAVA_METHOD(dSCddfinished, dSCClazz, "dragDropFinished", "(ZIII)V");
1233     DASSERT(!JNU_IsNull(env, self));
1234     env->CallVoidMethod(self, dSCddfinished, success, operations, x, y);
1235     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1236         env->ExceptionDescribe();
1237         env->ExceptionClear();
1238     }
1239 }
1240 
1241 void
1242 AwtDragSource::call_dSCmouseMoved(JNIEnv* env, jobject self, jint targetActions,
1243                                   jint modifiers, jint x, jint y) {

1244     DECLARE_VOID_JAVA_METHOD(dSCmouseMoved, dSCClazz, "dragMouseMoved",
1245                              "(IIII)V");
1246     DASSERT(!JNU_IsNull(env, self));
1247     env->CallVoidMethod(self, dSCmouseMoved, targetActions, modifiers, x, y);
1248     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1249         env->ExceptionDescribe();
1250         env->ExceptionClear();
1251     }
1252 }
1253 
1254 DECLARE_JAVA_CLASS(awtIEClazz, "java/awt/event/InputEvent")
1255 
1256 /**
1257  * Constructor
1258  */
1259 
1260 AwtDragSource::ADSIEnumFormatEtc::ADSIEnumFormatEtc(AwtDragSource* parent) {
1261     m_parent = parent;
1262     m_idx    = 0;
1263 
1264     m_refs   = 0;
1265 
1266     m_parent->AddRef();
1267 


   1 /*
   2  * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 265     ::GetCursorPos(&dragSource->m_dragPoint);
 266 
 267     dragSource->Signal();
 268 
 269     AwtToolkit &toolkit = AwtToolkit::GetInstance();
 270     toolkit.isInDoDragDropLoop = TRUE;
 271     res = ::DoDragDrop(dragSource,
 272                        dragSource,
 273                        convertActionsToDROPEFFECT(dragSource->m_actions),
 274                        &effects
 275           );
 276     toolkit.isInDoDragDropLoop = FALSE;
 277 
 278     if (effects == DROPEFFECT_NONE && dragSource->m_dwPerformedDropEffect != DROPEFFECT_NONE) {
 279         effects = dragSource->m_dwPerformedDropEffect;
 280     }
 281     dragSource->m_dwPerformedDropEffect = DROPEFFECT_NONE;
 282 
 283     call_dSCddfinished(env, peer, res == DRAGDROP_S_DROP && effects != DROPEFFECT_NONE,
 284                        convertDROPEFFECTToActions(effects),
 285                        dragSource->m_dragPoint);
 286 
 287     env->DeleteLocalRef(peer);
 288 
 289     DASSERT(AwtDropTarget::IsCurrentDnDDataObject(dragSource));
 290     AwtDropTarget::SetCurrentDnDDataObject(NULL);
 291 
 292     PictureDragHelper::Destroy();
 293     dragSource->Release();
 294 }
 295 
 296 /**
 297  * constructor
 298  */
 299 
 300 AwtDragSource::AwtDragSource(JNIEnv* env, jobject peer, jobject component,
 301                              jobject transferable, jobject trigger,
 302                              jint actions, jlongArray formats,
 303                              jobject formatMap) {
 304     m_peer      = env->NewGlobalRef(peer);
 305 


 632  * QueryContinueDrag
 633  */
 634 
 635 HRESULT __stdcall  AwtDragSource::QueryContinueDrag(BOOL fEscapeKeyPressed, DWORD grfKeyState) {
 636     AwtToolkit::GetInstance().eventNumber++;
 637     TRY;
 638 
 639     JNIEnv* env       = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 640 
 641     if (fEscapeKeyPressed)
 642         return DRAGDROP_S_CANCEL;
 643 
 644     jint modifiers = AwtComponent::GetJavaModifiers();
 645 
 646     POINT dragPoint;
 647 
 648     ::GetCursorPos(&dragPoint);
 649 
 650     if ( (dragPoint.x != m_dragPoint.x || dragPoint.y != m_dragPoint.y) &&
 651          m_lastmods == modifiers) {//cannot move before cursor change
 652         call_dSCmouseMoved(env, m_peer, m_actions, modifiers, dragPoint);

 653         JNU_CHECK_EXCEPTION_RETURN(env, E_UNEXPECTED);
 654         m_dragPoint = dragPoint;
 655     }
 656 
 657     if ((modifiers & JAVA_BUTTON_MASK) == 0) {
 658         return DRAGDROP_S_DROP;
 659     } else if (m_initmods == 0) {
 660         m_initmods = modifiers;
 661     } else if ((modifiers & JAVA_BUTTON_MASK) != (m_initmods & JAVA_BUTTON_MASK)) {
 662         return DRAGDROP_S_CANCEL;
 663     } else if (m_lastmods != modifiers) {
 664         call_dSCchanged(env, m_peer, m_actions, modifiers, dragPoint);

 665         m_bRestoreNodropCustomCursor = TRUE;
 666     }
 667 
 668     m_lastmods = modifiers;
 669 
 670     //CR 6480706 - MS Bug on hold
 671     HCURSOR hNeedCursor;
 672     if (
 673         m_bRestoreNodropCustomCursor &&
 674         m_cursor != NULL &&
 675         (hNeedCursor = m_cursor->GetHCursor()) != ::GetCursor() )
 676     {
 677         ChangeCursor();
 678         m_bRestoreNodropCustomCursor = FALSE;
 679     }
 680     return S_OK;
 681 
 682    CATCH_BAD_ALLOC_RET(E_OUTOFMEMORY);
 683 }
 684 


 707     if (::GetKeyState(VK_SHIFT)   & 0xff00)
 708         mods |= MK_SHIFT;
 709     if (::GetKeyState(VK_CONTROL) & 0xff00)
 710         mods |= MK_CONTROL;
 711     if (::GetKeyState(VK_MENU) & 0xff00)
 712         mods |= MK_ALT;
 713 
 714     modifiers = AwtComponent::GetJavaModifiers();
 715 
 716     POINT curs;
 717 
 718     ::GetCursorPos(&curs);
 719 
 720     m_droptarget = ::WindowFromPoint(curs);
 721 
 722     int invalid = (dwEffect == DROPEFFECT_NONE);
 723 
 724     if (invalid) {
 725         // Don't call dragExit if dragEnter and dragOver haven't been called.
 726         if (!m_enterpending) {
 727             call_dSCexit(env, m_peer, curs);
 728         }
 729         m_droptarget = (HWND)NULL;
 730         m_enterpending = TRUE;
 731     } else if (m_droptarget != NULL) {
 732         (*(m_enterpending ? call_dSCenter : call_dSCmotion))
 733             (env, m_peer, m_actions, modifiers, curs);
 734 
 735         m_enterpending = FALSE;
 736     }
 737 
 738     if (m_droptarget != NULL) {
 739         RECT  rect;
 740         POINT client = curs;
 741         VERIFY(::ScreenToClient(m_droptarget, &client));
 742         VERIFY(::GetClientRect(m_droptarget, &rect));
 743         if (::PtInRect(&rect, client)) {
 744             m_fNC = FALSE;
 745             m_dropPoint = client;
 746         } else {
 747             m_fNC = TRUE;
 748             m_dropPoint = curs;
 749         }
 750     } else {
 751         m_fNC = TRUE;
 752         m_dropPoint.x = 0;
 753         m_dropPoint.y = 0;


1157     DWORD id = ::CoGetCurrentProcess();
1158 
1159     HGLOBAL copy = ::GlobalAlloc(GALLOCFLG, sizeof(id));
1160 
1161     if (copy == NULL) {
1162         throw std::bad_alloc();
1163     }
1164 
1165     char *dataout = (char *)::GlobalLock(copy);
1166 
1167     memcpy(dataout, &id, sizeof(id));
1168     ::GlobalUnlock(copy);
1169 
1170     pmedium->tymed = TYMED_HGLOBAL;
1171     pmedium->hGlobal = copy;
1172     pmedium->pUnkForRelease = (IUnknown *)NULL;
1173 
1174     return S_OK;
1175 }
1176 
1177 static void ScaleDown(POINT &pt) {
1178     HMONITOR monitor = MonitorFromPoint(pt, MONITOR_DEFAULTTOPRIMARY);
1179     int screen = AwtWin32GraphicsDevice::GetScreenFromHMONITOR(monitor);
1180     Devices::InstanceAccess devices;
1181     AwtWin32GraphicsDevice *device = devices->GetDevice(screen);
1182     if (device) {
1183         pt.x = device->ScaleDownX(pt.x);
1184         pt.y = device->ScaleDownY(pt.y);
1185     }
1186 }
1187 
1188 DECLARE_JAVA_CLASS(dSCClazz, "sun/awt/windows/WDragSourceContextPeer")
1189 
1190 void
1191 AwtDragSource::call_dSCenter(JNIEnv* env, jobject self, jint targetActions,
1192                              jint modifiers, POINT pt) {
1193     ScaleDown(pt);
1194     DECLARE_VOID_JAVA_METHOD(dSCenter, dSCClazz, "dragEnter", "(IIII)V");
1195     DASSERT(!JNU_IsNull(env, self));
1196     env->CallVoidMethod(self, dSCenter, targetActions, modifiers, pt.x, pt.y);
1197     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1198         env->ExceptionDescribe();
1199         env->ExceptionClear();
1200     }
1201 }
1202 
1203 void
1204 AwtDragSource::call_dSCmotion(JNIEnv* env, jobject self, jint targetActions,
1205                               jint modifiers, POINT pt) {
1206     ScaleDown(pt);
1207     DECLARE_VOID_JAVA_METHOD(dSCmotion, dSCClazz, "dragMotion", "(IIII)V");
1208     DASSERT(!JNU_IsNull(env, self));
1209     env->CallVoidMethod(self, dSCmotion, targetActions, modifiers, pt.x, pt.y);
1210     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1211         env->ExceptionDescribe();
1212         env->ExceptionClear();
1213     }
1214 }
1215 
1216 void
1217 AwtDragSource::call_dSCchanged(JNIEnv* env, jobject self, jint targetActions,
1218                                jint modifiers, POINT pt) {
1219     ScaleDown(pt);
1220     DECLARE_VOID_JAVA_METHOD(dSCchanged, dSCClazz, "operationChanged",
1221                              "(IIII)V");
1222     DASSERT(!JNU_IsNull(env, self));
1223     env->CallVoidMethod(self, dSCchanged, targetActions, modifiers, pt.x, pt.y);
1224     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1225         env->ExceptionDescribe();
1226         env->ExceptionClear();
1227     }
1228 }
1229 
1230 void
1231 AwtDragSource::call_dSCexit(JNIEnv* env, jobject self, POINT pt) {
1232     ScaleDown(pt);
1233     DECLARE_VOID_JAVA_METHOD(dSCexit, dSCClazz, "dragExit", "(II)V");
1234     DASSERT(!JNU_IsNull(env, self));
1235     env->CallVoidMethod(self, dSCexit, pt.x, pt.y);
1236     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1237         env->ExceptionDescribe();
1238         env->ExceptionClear();
1239     }
1240 }
1241 
1242 void
1243 AwtDragSource::call_dSCddfinished(JNIEnv* env, jobject self, jboolean success,
1244                                   jint operations, POINT pt) {
1245     ScaleDown(pt);
1246     DECLARE_VOID_JAVA_METHOD(dSCddfinished, dSCClazz, "dragDropFinished", "(ZIII)V");
1247     DASSERT(!JNU_IsNull(env, self));
1248     env->CallVoidMethod(self, dSCddfinished, success, operations, pt.x, pt.y);
1249     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1250         env->ExceptionDescribe();
1251         env->ExceptionClear();
1252     }
1253 }
1254 
1255 void
1256 AwtDragSource::call_dSCmouseMoved(JNIEnv* env, jobject self, jint targetActions,
1257                                   jint modifiers, POINT pt) {
1258     ScaleDown(pt);
1259     DECLARE_VOID_JAVA_METHOD(dSCmouseMoved, dSCClazz, "dragMouseMoved",
1260                              "(IIII)V");
1261     DASSERT(!JNU_IsNull(env, self));
1262     env->CallVoidMethod(self, dSCmouseMoved, targetActions, modifiers, pt.x, pt.y);
1263     if (!JNU_IsNull(env, safe_ExceptionOccurred(env))) {
1264         env->ExceptionDescribe();
1265         env->ExceptionClear();
1266     }
1267 }
1268 
1269 DECLARE_JAVA_CLASS(awtIEClazz, "java/awt/event/InputEvent")
1270 
1271 /**
1272  * Constructor
1273  */
1274 
1275 AwtDragSource::ADSIEnumFormatEtc::ADSIEnumFormatEtc(AwtDragSource* parent) {
1276     m_parent = parent;
1277     m_idx    = 0;
1278 
1279     m_refs   = 0;
1280 
1281     m_parent->AddRef();
1282 


< prev index next >