jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
changeset 439 3488710b02f8
parent 2 90ce3da70b43
child 2802 d05a9dcc8296
equal deleted inserted replaced
438:2ae294e4518c 439:3488710b02f8
     1 /*
     1 /*
     2  * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
     2  * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Sun designates this
     7  * published by the Free Software Foundation.  Sun designates this
    91             XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
    91             XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
    92             XDnDConstants.XA_XdndAware.setAtomData(window, XAtom.XA_ATOM, data, 1);
    92             XDnDConstants.XA_XdndAware.setAtomData(window, XAtom.XA_ATOM, data, 1);
    93             XToolkit.RESTORE_XERROR_HANDLER();
    93             XToolkit.RESTORE_XERROR_HANDLER();
    94 
    94 
    95             if (XToolkit.saved_error != null &&
    95             if (XToolkit.saved_error != null &&
    96                 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
    96                 XToolkit.saved_error.get_error_code() != XConstants.Success) {
    97                 throw new XException("Cannot write XdndAware property");
    97                 throw new XException("Cannot write XdndAware property");
    98             }
    98             }
    99         } finally {
    99         } finally {
   100             unsafe.freeMemory(data);
   100             unsafe.freeMemory(data);
   101             data = 0;
   101             data = 0;
   117         long newProxy = XDropTargetRegistry.getDnDProxyWindow();
   117         long newProxy = XDropTargetRegistry.getDnDProxyWindow();
   118         int status = 0;
   118         int status = 0;
   119 
   119 
   120         WindowPropertyGetter wpg1 =
   120         WindowPropertyGetter wpg1 =
   121             new WindowPropertyGetter(embedder, XDnDConstants.XA_XdndAware, 0, 1,
   121             new WindowPropertyGetter(embedder, XDnDConstants.XA_XdndAware, 0, 1,
   122                                      false, XlibWrapper.AnyPropertyType);
   122                                      false, XConstants.AnyPropertyType);
   123 
   123 
   124         try {
   124         try {
   125             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   125             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   126 
   126 
   127             if (status == XlibWrapper.Success &&
   127             if (status == XConstants.Success &&
   128                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   128                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   129 
   129 
   130                 overriden = true;
   130                 overriden = true;
   131                 version = (int)Native.getLong(wpg1.getData());
   131                 version = (int)Native.getLong(wpg1.getData());
   132             }
   132             }
   141                                          0, 1, false, XAtom.XA_WINDOW);
   141                                          0, 1, false, XAtom.XA_WINDOW);
   142 
   142 
   143             try {
   143             try {
   144                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
   144                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
   145 
   145 
   146                 if (status == XlibWrapper.Success &&
   146                 if (status == XConstants.Success &&
   147                     wpg2.getData() != 0 &&
   147                     wpg2.getData() != 0 &&
   148                     wpg2.getActualType() == XAtom.XA_WINDOW) {
   148                     wpg2.getActualType() == XAtom.XA_WINDOW) {
   149 
   149 
   150                     proxy = Native.getLong(wpg2.getData());
   150                     proxy = Native.getLong(wpg2.getData());
   151                 }
   151                 }
   159                                              0, 1, false, XAtom.XA_WINDOW);
   159                                              0, 1, false, XAtom.XA_WINDOW);
   160 
   160 
   161                 try {
   161                 try {
   162                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
   162                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
   163 
   163 
   164                     if (status != XlibWrapper.Success ||
   164                     if (status != XConstants.Success ||
   165                         wpg3.getData() == 0 ||
   165                         wpg3.getData() == 0 ||
   166                         wpg3.getActualType() != XAtom.XA_WINDOW ||
   166                         wpg3.getActualType() != XAtom.XA_WINDOW ||
   167                         Native.getLong(wpg3.getData()) != proxy) {
   167                         Native.getLong(wpg3.getData()) != proxy) {
   168 
   168 
   169                         proxy = 0;
   169                         proxy = 0;
   170                     } else {
   170                     } else {
   171                         WindowPropertyGetter wpg4 =
   171                         WindowPropertyGetter wpg4 =
   172                             new WindowPropertyGetter(proxy,
   172                             new WindowPropertyGetter(proxy,
   173                                                      XDnDConstants.XA_XdndAware,
   173                                                      XDnDConstants.XA_XdndAware,
   174                                                      0, 1, false,
   174                                                      0, 1, false,
   175                                                      XlibWrapper.AnyPropertyType);
   175                                                      XConstants.AnyPropertyType);
   176 
   176 
   177                         try {
   177                         try {
   178                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
   178                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
   179 
   179 
   180                             if (status != XlibWrapper.Success ||
   180                             if (status != XConstants.Success ||
   181                                 wpg4.getData() == 0 ||
   181                                 wpg4.getData() == 0 ||
   182                                 wpg4.getActualType() != XAtom.XA_ATOM) {
   182                                 wpg4.getActualType() != XAtom.XA_ATOM) {
   183 
   183 
   184                                 proxy = 0;
   184                                 proxy = 0;
   185                             }
   185                             }
   210                                                    data, 1);
   210                                                    data, 1);
   211             XToolkit.RESTORE_XERROR_HANDLER();
   211             XToolkit.RESTORE_XERROR_HANDLER();
   212 
   212 
   213             if (XToolkit.saved_error != null &&
   213             if (XToolkit.saved_error != null &&
   214                 XToolkit.saved_error.get_error_code() !=
   214                 XToolkit.saved_error.get_error_code() !=
   215                 XlibWrapper.Success) {
   215                 XConstants.Success) {
   216                 throw new XException("Cannot write XdndAware property");
   216                 throw new XException("Cannot write XdndAware property");
   217             }
   217             }
   218 
   218 
   219             Native.putLong(data, 0, newProxy);
   219             Native.putLong(data, 0, newProxy);
   220 
   220 
   224                                                    data, 1);
   224                                                    data, 1);
   225             XToolkit.RESTORE_XERROR_HANDLER();
   225             XToolkit.RESTORE_XERROR_HANDLER();
   226 
   226 
   227             if (XToolkit.saved_error != null &&
   227             if (XToolkit.saved_error != null &&
   228                 XToolkit.saved_error.get_error_code() !=
   228                 XToolkit.saved_error.get_error_code() !=
   229                 XlibWrapper.Success) {
   229                 XConstants.Success) {
   230                 throw new XException("Cannot write XdndProxy property");
   230                 throw new XException("Cannot write XdndProxy property");
   231             }
   231             }
   232 
   232 
   233             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
   233             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
   234 
   234 
   237                                                    data, 1);
   237                                                    data, 1);
   238             XToolkit.RESTORE_XERROR_HANDLER();
   238             XToolkit.RESTORE_XERROR_HANDLER();
   239 
   239 
   240             if (XToolkit.saved_error != null &&
   240             if (XToolkit.saved_error != null &&
   241                 XToolkit.saved_error.get_error_code() !=
   241                 XToolkit.saved_error.get_error_code() !=
   242                 XlibWrapper.Success) {
   242                 XConstants.Success) {
   243                 throw new XException("Cannot write XdndAware property");
   243                 throw new XException("Cannot write XdndAware property");
   244             }
   244             }
   245 
   245 
   246             Native.putLong(data, 0, newProxy);
   246             Native.putLong(data, 0, newProxy);
   247 
   247 
   250                                                    data, 1);
   250                                                    data, 1);
   251             XToolkit.RESTORE_XERROR_HANDLER();
   251             XToolkit.RESTORE_XERROR_HANDLER();
   252 
   252 
   253             if (XToolkit.saved_error != null &&
   253             if (XToolkit.saved_error != null &&
   254                 XToolkit.saved_error.get_error_code() !=
   254                 XToolkit.saved_error.get_error_code() !=
   255                 XlibWrapper.Success) {
   255                 XConstants.Success) {
   256                 throw new XException("Cannot write XdndProxy property");
   256                 throw new XException("Cannot write XdndProxy property");
   257             }
   257             }
   258         } finally {
   258         } finally {
   259             unsafe.freeMemory(data);
   259             unsafe.freeMemory(data);
   260             data = 0;
   260             data = 0;
   283                                                        data, 1);
   283                                                        data, 1);
   284                 XToolkit.RESTORE_XERROR_HANDLER();
   284                 XToolkit.RESTORE_XERROR_HANDLER();
   285 
   285 
   286                 if (XToolkit.saved_error != null &&
   286                 if (XToolkit.saved_error != null &&
   287                     XToolkit.saved_error.get_error_code() !=
   287                     XToolkit.saved_error.get_error_code() !=
   288                     XlibWrapper.Success) {
   288                     XConstants.Success) {
   289                     throw new XException("Cannot write XdndAware property");
   289                     throw new XException("Cannot write XdndAware property");
   290                 }
   290                 }
   291 
   291 
   292                 Native.putLong(data, 0, (int)entry.getProxy());
   292                 Native.putLong(data, 0, (int)entry.getProxy());
   293 
   293 
   296                                                        data, 1);
   296                                                        data, 1);
   297                 XToolkit.RESTORE_XERROR_HANDLER();
   297                 XToolkit.RESTORE_XERROR_HANDLER();
   298 
   298 
   299                 if (XToolkit.saved_error != null &&
   299                 if (XToolkit.saved_error != null &&
   300                     XToolkit.saved_error.get_error_code() !=
   300                     XToolkit.saved_error.get_error_code() !=
   301                     XlibWrapper.Success) {
   301                     XConstants.Success) {
   302                     throw new XException("Cannot write XdndProxy property");
   302                     throw new XException("Cannot write XdndProxy property");
   303                 }
   303                 }
   304             } finally {
   304             } finally {
   305                 unsafe.freeMemory(data);
   305                 unsafe.freeMemory(data);
   306                 data = 0;
   306                 data = 0;
   324         long newProxy = XDropTargetRegistry.getDnDProxyWindow();
   324         long newProxy = XDropTargetRegistry.getDnDProxyWindow();
   325         int status = 0;
   325         int status = 0;
   326 
   326 
   327         WindowPropertyGetter wpg1 =
   327         WindowPropertyGetter wpg1 =
   328             new WindowPropertyGetter(embedded, XDnDConstants.XA_XdndAware, 0, 1,
   328             new WindowPropertyGetter(embedded, XDnDConstants.XA_XdndAware, 0, 1,
   329                                      false, XlibWrapper.AnyPropertyType);
   329                                      false, XConstants.AnyPropertyType);
   330 
   330 
   331         try {
   331         try {
   332             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   332             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   333 
   333 
   334             if (status == XlibWrapper.Success &&
   334             if (status == XConstants.Success &&
   335                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   335                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   336 
   336 
   337                 overriden = true;
   337                 overriden = true;
   338                 version = (int)Native.getLong(wpg1.getData());
   338                 version = (int)Native.getLong(wpg1.getData());
   339             }
   339             }
   348                                          0, 1, false, XAtom.XA_WINDOW);
   348                                          0, 1, false, XAtom.XA_WINDOW);
   349 
   349 
   350             try {
   350             try {
   351                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
   351                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
   352 
   352 
   353                 if (status == XlibWrapper.Success &&
   353                 if (status == XConstants.Success &&
   354                     wpg2.getData() != 0 &&
   354                     wpg2.getData() != 0 &&
   355                     wpg2.getActualType() == XAtom.XA_WINDOW) {
   355                     wpg2.getActualType() == XAtom.XA_WINDOW) {
   356 
   356 
   357                     proxy = Native.getLong(wpg2.getData());
   357                     proxy = Native.getLong(wpg2.getData());
   358                 }
   358                 }
   366                                              0, 1, false, XAtom.XA_WINDOW);
   366                                              0, 1, false, XAtom.XA_WINDOW);
   367 
   367 
   368                 try {
   368                 try {
   369                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
   369                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
   370 
   370 
   371                     if (status != XlibWrapper.Success ||
   371                     if (status != XConstants.Success ||
   372                         wpg3.getData() == 0 ||
   372                         wpg3.getData() == 0 ||
   373                         wpg3.getActualType() != XAtom.XA_WINDOW ||
   373                         wpg3.getActualType() != XAtom.XA_WINDOW ||
   374                         Native.getLong(wpg3.getData()) != proxy) {
   374                         Native.getLong(wpg3.getData()) != proxy) {
   375 
   375 
   376                         proxy = 0;
   376                         proxy = 0;
   377                     } else {
   377                     } else {
   378                         WindowPropertyGetter wpg4 =
   378                         WindowPropertyGetter wpg4 =
   379                             new WindowPropertyGetter(proxy,
   379                             new WindowPropertyGetter(proxy,
   380                                                      XDnDConstants.XA_XdndAware,
   380                                                      XDnDConstants.XA_XdndAware,
   381                                                      0, 1, false,
   381                                                      0, 1, false,
   382                                                      XlibWrapper.AnyPropertyType);
   382                                                      XConstants.AnyPropertyType);
   383 
   383 
   384                         try {
   384                         try {
   385                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
   385                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
   386 
   386 
   387                             if (status != XlibWrapper.Success ||
   387                             if (status != XConstants.Success ||
   388                                 wpg4.getData() == 0 ||
   388                                 wpg4.getData() == 0 ||
   389                                 wpg4.getActualType() != XAtom.XA_ATOM) {
   389                                 wpg4.getActualType() != XAtom.XA_ATOM) {
   390 
   390 
   391                                 proxy = 0;
   391                                 proxy = 0;
   392                             }
   392                             }
   406     public boolean isProtocolSupported(long window) {
   406     public boolean isProtocolSupported(long window) {
   407         assert XToolkit.isAWTLockHeldByCurrentThread();
   407         assert XToolkit.isAWTLockHeldByCurrentThread();
   408 
   408 
   409         WindowPropertyGetter wpg1 =
   409         WindowPropertyGetter wpg1 =
   410             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
   410             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
   411                                      false, XlibWrapper.AnyPropertyType);
   411                                      false, XConstants.AnyPropertyType);
   412 
   412 
   413         try {
   413         try {
   414             int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   414             int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
   415 
   415 
   416             if (status == XlibWrapper.Success &&
   416             if (status == XConstants.Success &&
   417                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   417                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
   418 
   418 
   419                 return true;
   419                 return true;
   420             } else {
   420             } else {
   421                 return false;
   421                 return false;
   521             int countFormats = 0;
   521             int countFormats = 0;
   522             long[] formats3 = new long[3];
   522             long[] formats3 = new long[3];
   523 
   523 
   524             for (int i = 0; i < 3; i++) {
   524             for (int i = 0; i < 3; i++) {
   525                 long j;
   525                 long j;
   526                 if ((j = xclient.get_data(2 + i)) != XlibWrapper.None) {
   526                 if ((j = xclient.get_data(2 + i)) != XConstants.None) {
   527                     formats3[countFormats++] = j;
   527                     formats3[countFormats++] = j;
   528                 }
   528                 }
   529             }
   529             }
   530 
   530 
   531             formats = new long[countFormats];
   531             formats = new long[countFormats];
   547 
   547 
   548             XToolkit.RESTORE_XERROR_HANDLER();
   548             XToolkit.RESTORE_XERROR_HANDLER();
   549 
   549 
   550             if (status == 0 ||
   550             if (status == 0 ||
   551                 (XToolkit.saved_error != null &&
   551                 (XToolkit.saved_error != null &&
   552                  XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
   552                  XToolkit.saved_error.get_error_code() != XConstants.Success)) {
   553                 throw new XException("XGetWindowAttributes failed");
   553                 throw new XException("XGetWindowAttributes failed");
   554             }
   554             }
   555 
   555 
   556             source_win_mask = wattr.get_your_event_mask();
   556             source_win_mask = wattr.get_your_event_mask();
   557         } finally {
   557         } finally {
   559         }
   559         }
   560 
   560 
   561         XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
   561         XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
   562         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
   562         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
   563                                  source_win_mask |
   563                                  source_win_mask |
   564                                  XlibWrapper.StructureNotifyMask);
   564                                  XConstants.StructureNotifyMask);
   565 
   565 
   566         XToolkit.RESTORE_XERROR_HANDLER();
   566         XToolkit.RESTORE_XERROR_HANDLER();
   567 
   567 
   568         if (XToolkit.saved_error != null &&
   568         if (XToolkit.saved_error != null &&
   569             XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
   569             XToolkit.saved_error.get_error_code() != XConstants.Success) {
   570             throw new XException("XSelectInput failed");
   570             throw new XException("XSelectInput failed");
   571         }
   571         }
   572 
   572 
   573         sourceWindow = source_win;
   573         sourceWindow = source_win;
   574         sourceWindowMask = source_win_mask;
   574         sourceWindowMask = source_win_mask;
   579 
   579 
   580         return true;
   580         return true;
   581     }
   581     }
   582 
   582 
   583     private boolean processXdndPosition(XClientMessageEvent xclient) {
   583     private boolean processXdndPosition(XClientMessageEvent xclient) {
   584         long time_stamp = (int)XlibWrapper.CurrentTime;
   584         long time_stamp = (int)XConstants.CurrentTime;
   585         long xdnd_action = 0;
   585         long xdnd_action = 0;
   586         int java_action = DnDConstants.ACTION_NONE;
   586         int java_action = DnDConstants.ACTION_NONE;
   587         int x = 0;
   587         int x = 0;
   588         int y = 0;
   588         int y = 0;
   589 
   589 
   746                                                 long sourceWindow,
   746                                                 long sourceWindow,
   747                                                 long data1, long data2,
   747                                                 long data1, long data2,
   748                                                 long data3, long data4) {
   748                                                 long data3, long data4) {
   749         XClientMessageEvent enter = new XClientMessageEvent();
   749         XClientMessageEvent enter = new XClientMessageEvent();
   750         try {
   750         try {
   751             enter.set_type((int)XlibWrapper.ClientMessage);
   751             enter.set_type((int)XConstants.ClientMessage);
   752             enter.set_window(toplevel);
   752             enter.set_window(toplevel);
   753             enter.set_format(32);
   753             enter.set_format(32);
   754             enter.set_message_type(XDnDConstants.XA_XdndEnter.getAtom());
   754             enter.set_message_type(XDnDConstants.XA_XdndEnter.getAtom());
   755             /* XID of the source window */
   755             /* XID of the source window */
   756             enter.set_data(0, sourceWindow);
   756             enter.set_data(0, sourceWindow);
   772 
   772 
   773     protected void sendLeaveMessageToToplevelImpl(long toplevel,
   773     protected void sendLeaveMessageToToplevelImpl(long toplevel,
   774                                                   long sourceWindow) {
   774                                                   long sourceWindow) {
   775         XClientMessageEvent leave = new XClientMessageEvent();
   775         XClientMessageEvent leave = new XClientMessageEvent();
   776         try {
   776         try {
   777             leave.set_type((int)XlibWrapper.ClientMessage);
   777             leave.set_type((int)XConstants.ClientMessage);
   778             leave.set_window(toplevel);
   778             leave.set_window(toplevel);
   779             leave.set_format(32);
   779             leave.set_format(32);
   780             leave.set_message_type(XDnDConstants.XA_XdndLeave.getAtom());
   780             leave.set_message_type(XDnDConstants.XA_XdndLeave.getAtom());
   781             /* XID of the source window */
   781             /* XID of the source window */
   782             leave.set_data(0, sourceWindow);
   782             leave.set_data(0, sourceWindow);
   802             action = DnDConstants.ACTION_NONE;
   802             action = DnDConstants.ACTION_NONE;
   803         }
   803         }
   804 
   804 
   805         XClientMessageEvent msg = new XClientMessageEvent();
   805         XClientMessageEvent msg = new XClientMessageEvent();
   806         try {
   806         try {
   807             msg.set_type((int)XlibWrapper.ClientMessage);
   807             msg.set_type((int)XConstants.ClientMessage);
   808             msg.set_window(xclient.get_data(0));
   808             msg.set_window(xclient.get_data(0));
   809             msg.set_format(32);
   809             msg.set_format(32);
   810             msg.set_message_type(XDnDConstants.XA_XdndStatus.getAtom());
   810             msg.set_message_type(XDnDConstants.XA_XdndStatus.getAtom());
   811             /* target window */
   811             /* target window */
   812             msg.set_data(0, xclient.get_window());
   812             msg.set_data(0, xclient.get_window());
   824 
   824 
   825             XToolkit.awtLock();
   825             XToolkit.awtLock();
   826             try {
   826             try {
   827                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
   827                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
   828                                        xclient.get_data(0),
   828                                        xclient.get_data(0),
   829                                        false, XlibWrapper.NoEventMask,
   829                                        false, XConstants.NoEventMask,
   830                                        msg.pData);
   830                                        msg.pData);
   831             } finally {
   831             } finally {
   832                 XToolkit.awtUnlock();
   832                 XToolkit.awtUnlock();
   833             }
   833             }
   834         } finally {
   834         } finally {
   840 
   840 
   841     public Object getData(long ctxt, long format)
   841     public Object getData(long ctxt, long format)
   842       throws IllegalArgumentException, IOException {
   842       throws IllegalArgumentException, IOException {
   843         XClientMessageEvent xclient = new XClientMessageEvent(ctxt);
   843         XClientMessageEvent xclient = new XClientMessageEvent(ctxt);
   844         long message_type = xclient.get_message_type();
   844         long message_type = xclient.get_message_type();
   845         long time_stamp = XlibWrapper.CurrentTime;
   845         long time_stamp = XConstants.CurrentTime;
   846 
   846 
   847         // NOTE: we assume that the source supports at least version 1, so we
   847         // NOTE: we assume that the source supports at least version 1, so we
   848         // can use the time stamp
   848         // can use the time stamp
   849         if (message_type == XDnDConstants.XA_XdndPosition.getAtom()) {
   849         if (message_type == XDnDConstants.XA_XdndPosition.getAtom()) {
   850             // X server time is an unsigned 32-bit number!
   850             // X server time is an unsigned 32-bit number!
   890             }
   890             }
   891         }
   891         }
   892 
   892 
   893         XClientMessageEvent msg = new XClientMessageEvent();
   893         XClientMessageEvent msg = new XClientMessageEvent();
   894         try {
   894         try {
   895             msg.set_type((int)XlibWrapper.ClientMessage);
   895             msg.set_type((int)XConstants.ClientMessage);
   896             msg.set_window(xclient.get_data(0));
   896             msg.set_window(xclient.get_data(0));
   897             msg.set_format(32);
   897             msg.set_format(32);
   898             msg.set_message_type(XDnDConstants.XA_XdndFinished.getAtom());
   898             msg.set_message_type(XDnDConstants.XA_XdndFinished.getAtom());
   899             msg.set_data(0, xclient.get_window()); /* target window */
   899             msg.set_data(0, xclient.get_window()); /* target window */
   900             msg.set_data(1, 0); /* flags */
   900             msg.set_data(1, 0); /* flags */
   912 
   912 
   913             XToolkit.awtLock();
   913             XToolkit.awtLock();
   914             try {
   914             try {
   915                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
   915                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
   916                                        xclient.get_data(0),
   916                                        xclient.get_data(0),
   917                                        false, XlibWrapper.NoEventMask,
   917                                        false, XConstants.NoEventMask,
   918                                        msg.pData);
   918                                        msg.pData);
   919             } finally {
   919             } finally {
   920                 XToolkit.awtUnlock();
   920                 XToolkit.awtUnlock();
   921             }
   921             }
   922         } finally {
   922         } finally {
  1117                                                                           wpg.getData(),
  1117                                                                           wpg.getData(),
  1118                                                                           wpg.getNumberOfItems());
  1118                                                                           wpg.getNumberOfItems());
  1119                                 XToolkit.RESTORE_XERROR_HANDLER();
  1119                                 XToolkit.RESTORE_XERROR_HANDLER();
  1120 
  1120 
  1121                                 if (XToolkit.saved_error != null &&
  1121                                 if (XToolkit.saved_error != null &&
  1122                                     XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
  1122                                     XToolkit.saved_error.get_error_code() != XConstants.Success) {
  1123                                     if (logger.isLoggable(Level.WARNING)) {
  1123                                     if (logger.isLoggable(Level.WARNING)) {
  1124                                         logger.warning("Cannot set XdndTypeList on the proxy window");
  1124                                         logger.warning("Cannot set XdndTypeList on the proxy window");
  1125                                     }
  1125                                     }
  1126                                 }
  1126                                 }
  1127                             } finally {
  1127                             } finally {