116 |
116 |
117 WindowPropertyGetter wpg = new WindowPropertyGetter(defaultRootWindow, |
117 WindowPropertyGetter wpg = new WindowPropertyGetter(defaultRootWindow, |
118 XA_MOTIF_DRAG_WINDOW, |
118 XA_MOTIF_DRAG_WINDOW, |
119 0, 1, |
119 0, 1, |
120 false, |
120 false, |
121 XlibWrapper.AnyPropertyType); |
121 XConstants.AnyPropertyType); |
122 try { |
122 try { |
123 int status = wpg.execute(XToolkit.IgnoreBadWindowHandler); |
123 int status = wpg.execute(XToolkit.IgnoreBadWindowHandler); |
124 |
124 |
125 if (status == XlibWrapper.Success && |
125 if (status == XConstants.Success && |
126 wpg.getData() != 0 && |
126 wpg.getData() != 0 && |
127 wpg.getActualType() == XAtom.XA_WINDOW && |
127 wpg.getActualType() == XAtom.XA_WINDOW && |
128 wpg.getActualFormat() == 32 && |
128 wpg.getActualFormat() == 32 && |
129 wpg.getNumberOfItems() == 1) { |
129 wpg.getNumberOfItems() == 1) { |
130 long data = wpg.getData(); |
130 long data = wpg.getData(); |
161 } |
161 } |
162 |
162 |
163 XlibWrapper.XGrabServer(newDisplay); |
163 XlibWrapper.XGrabServer(newDisplay); |
164 |
164 |
165 try { |
165 try { |
166 XlibWrapper.XSetCloseDownMode(newDisplay, (int)XlibWrapper.RetainPermanent); |
166 XlibWrapper.XSetCloseDownMode(newDisplay, (int)XConstants.RetainPermanent); |
167 |
167 |
168 XSetWindowAttributes xwa = new XSetWindowAttributes(); |
168 XSetWindowAttributes xwa = new XSetWindowAttributes(); |
169 |
169 |
170 try { |
170 try { |
171 xwa.set_override_redirect(true); |
171 xwa.set_override_redirect(true); |
172 xwa.set_event_mask(XlibWrapper.PropertyChangeMask); |
172 xwa.set_event_mask(XConstants.PropertyChangeMask); |
173 |
173 |
174 motifWindow = XlibWrapper.XCreateWindow(newDisplay, defaultRootWindow, |
174 motifWindow = XlibWrapper.XCreateWindow(newDisplay, defaultRootWindow, |
175 -10, -10, 1, 1, 0, 0, |
175 -10, -10, 1, 1, 0, 0, |
176 XlibWrapper.InputOnly, |
176 XConstants.InputOnly, |
177 XlibWrapper.CopyFromParent, |
177 XConstants.CopyFromParent, |
178 (XlibWrapper.CWOverrideRedirect | |
178 (XConstants.CWOverrideRedirect | |
179 XlibWrapper.CWEventMask), |
179 XConstants.CWEventMask), |
180 xwa.pData); |
180 xwa.pData); |
181 |
181 |
182 if (motifWindow == 0) { |
182 if (motifWindow == 0) { |
183 throw new XException("XCreateWindow returns NULL"); |
183 throw new XException("XCreateWindow returns NULL"); |
184 } |
184 } |
193 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
193 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
194 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
194 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
195 defaultRootWindow, |
195 defaultRootWindow, |
196 XA_MOTIF_DRAG_WINDOW.getAtom(), |
196 XA_MOTIF_DRAG_WINDOW.getAtom(), |
197 XAtom.XA_WINDOW, 32, |
197 XAtom.XA_WINDOW, 32, |
198 XlibWrapper.PropModeReplace, |
198 XConstants.PropModeReplace, |
199 data, 1); |
199 data, 1); |
200 |
200 |
201 XToolkit.RESTORE_XERROR_HANDLER(); |
201 XToolkit.RESTORE_XERROR_HANDLER(); |
202 |
202 |
203 if (XToolkit.saved_error != null && |
203 if (XToolkit.saved_error != null && |
204 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) { |
204 XToolkit.saved_error.get_error_code() != XConstants.Success) { |
205 throw new XException("Cannot write motif drag window handle."); |
205 throw new XException("Cannot write motif drag window handle."); |
206 } |
206 } |
207 |
207 |
208 return motifWindow; |
208 return motifWindow; |
209 } finally { |
209 } finally { |
280 false, |
280 false, |
281 XA_MOTIF_DRAG_TARGETS.getAtom()); |
281 XA_MOTIF_DRAG_TARGETS.getAtom()); |
282 try { |
282 try { |
283 int status = wpg.execute(XToolkit.IgnoreBadWindowHandler); |
283 int status = wpg.execute(XToolkit.IgnoreBadWindowHandler); |
284 |
284 |
285 if (status != XlibWrapper.Success |
285 if (status != XConstants.Success |
286 || wpg.getActualType() != XA_MOTIF_DRAG_TARGETS.getAtom() |
286 || wpg.getActualType() != XA_MOTIF_DRAG_TARGETS.getAtom() |
287 || wpg.getData() == 0) { |
287 || wpg.getData() == 0) { |
288 |
288 |
289 return null; |
289 return null; |
290 } |
290 } |
397 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
397 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
398 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
398 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
399 motifWindow, |
399 motifWindow, |
400 XA_MOTIF_DRAG_TARGETS.getAtom(), |
400 XA_MOTIF_DRAG_TARGETS.getAtom(), |
401 XA_MOTIF_DRAG_TARGETS.getAtom(), 8, |
401 XA_MOTIF_DRAG_TARGETS.getAtom(), 8, |
402 XlibWrapper.PropModeReplace, |
402 XConstants.PropModeReplace, |
403 data, tableSize); |
403 data, tableSize); |
404 |
404 |
405 XToolkit.RESTORE_XERROR_HANDLER(); |
405 XToolkit.RESTORE_XERROR_HANDLER(); |
406 |
406 |
407 if (XToolkit.saved_error != null && |
407 if (XToolkit.saved_error != null && |
408 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) { |
408 XToolkit.saved_error.get_error_code() != XConstants.Success) { |
409 |
409 |
410 // Create a new motif window and retry. |
410 // Create a new motif window and retry. |
411 motifWindow = createMotifWindow(); |
411 motifWindow = createMotifWindow(); |
412 |
412 |
413 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
413 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
414 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
414 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), |
415 motifWindow, |
415 motifWindow, |
416 XA_MOTIF_DRAG_TARGETS.getAtom(), |
416 XA_MOTIF_DRAG_TARGETS.getAtom(), |
417 XA_MOTIF_DRAG_TARGETS.getAtom(), 8, |
417 XA_MOTIF_DRAG_TARGETS.getAtom(), 8, |
418 XlibWrapper.PropModeReplace, |
418 XConstants.PropModeReplace, |
419 data, tableSize); |
419 data, tableSize); |
420 |
420 |
421 XToolkit.RESTORE_XERROR_HANDLER(); |
421 XToolkit.RESTORE_XERROR_HANDLER(); |
422 |
422 |
423 if (XToolkit.saved_error != null && |
423 if (XToolkit.saved_error != null && |
424 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) { |
424 XToolkit.saved_error.get_error_code() != XConstants.Success) { |
425 throw new XException("Cannot write motif drag targets property."); |
425 throw new XException("Cannot write motif drag targets property."); |
426 } |
426 } |
427 } |
427 } |
428 } finally { |
428 } finally { |
429 unsafe.freeMemory(data); |
429 unsafe.freeMemory(data); |
536 |
536 |
537 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
537 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
538 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window, |
538 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window, |
539 XA_MOTIF_ATOM_0.getAtom(), |
539 XA_MOTIF_ATOM_0.getAtom(), |
540 XA_MOTIF_DRAG_INITIATOR_INFO.getAtom(), |
540 XA_MOTIF_DRAG_INITIATOR_INFO.getAtom(), |
541 8, XlibWrapper.PropModeReplace, |
541 8, XConstants.PropModeReplace, |
542 structData, MOTIF_INITIATOR_INFO_SIZE); |
542 structData, MOTIF_INITIATOR_INFO_SIZE); |
543 XToolkit.RESTORE_XERROR_HANDLER(); |
543 XToolkit.RESTORE_XERROR_HANDLER(); |
544 |
544 |
545 if (XToolkit.saved_error != null && |
545 if (XToolkit.saved_error != null && |
546 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) { |
546 XToolkit.saved_error.get_error_code() != XConstants.Success) { |
547 throw new XException("Cannot write drag initiator info"); |
547 throw new XException("Cannot write drag initiator info"); |
548 } |
548 } |
549 } finally { |
549 } finally { |
550 unsafe.freeMemory(structData); |
550 unsafe.freeMemory(structData); |
551 } |
551 } |
569 |
569 |
570 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
570 XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler); |
571 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window, |
571 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window, |
572 XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(), |
572 XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(), |
573 XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(), |
573 XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(), |
574 8, XlibWrapper.PropModeReplace, |
574 8, XConstants.PropModeReplace, |
575 data, dataSize); |
575 data, dataSize); |
576 XToolkit.RESTORE_XERROR_HANDLER(); |
576 XToolkit.RESTORE_XERROR_HANDLER(); |
577 |
577 |
578 if (XToolkit.saved_error != null && |
578 if (XToolkit.saved_error != null && |
579 XToolkit.saved_error.get_error_code() != XlibWrapper.Success) { |
579 XToolkit.saved_error.get_error_code() != XConstants.Success) { |
580 throw new XException("Cannot write Motif receiver info property"); |
580 throw new XException("Cannot write Motif receiver info property"); |
581 } |
581 } |
582 } finally { |
582 } finally { |
583 unsafe.freeMemory(data); |
583 unsafe.freeMemory(data); |
584 } |
584 } |