Mercurial > projects > dwt-mac
comparison dwt/dnd/DropTarget.d @ 7:e831403a80a9
Add 'cast' to casts
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 27 Aug 2008 14:30:35 +0200 |
parents | 1a8b3cb347e0 |
children | a9ab4c738ed8 |
comparison
equal
deleted
inserted
replaced
6:b903c16b6f48 | 7:e831403a80a9 |
---|---|
54 * // A drop has occurred, copy over the data | 54 * // A drop has occurred, copy over the data |
55 * if (event.data is null) { // no data to copy, indicate failure in event.detail | 55 * if (event.data is null) { // no data to copy, indicate failure in event.detail |
56 * event.detail = DND.DROP_NONE; | 56 * event.detail = DND.DROP_NONE; |
57 * return; | 57 * return; |
58 * } | 58 * } |
59 * label.setText ((String) event.data); // data copied to label text | 59 * label.setText (cast(String) event.data); // data copied to label text |
60 * } | 60 * } |
61 * }); | 61 * }); |
62 * </pre></code> | 62 * </pre></code> |
63 * | 63 * |
64 * <dl> | 64 * <dl> |
166 } | 166 } |
167 }); | 167 }); |
168 | 168 |
169 Object effect = control.getData(DEFAULT_DROP_TARGET_EFFECT); | 169 Object effect = control.getData(DEFAULT_DROP_TARGET_EFFECT); |
170 if (effect instanceof DropTargetEffect) { | 170 if (effect instanceof DropTargetEffect) { |
171 dropEffect = (DropTargetEffect) effect; | 171 dropEffect = cast(DropTargetEffect) effect; |
172 } else if (control instanceof Table) { | 172 } else if (control instanceof Table) { |
173 dropEffect = new TableDropTargetEffect((Table) control); | 173 dropEffect = new TableDropTargetEffect(cast(Table) control); |
174 } else if (control instanceof Tree) { | 174 } else if (control instanceof Tree) { |
175 dropEffect = new TreeDropTargetEffect((Tree) control); | 175 dropEffect = new TreeDropTargetEffect(cast(Tree) control); |
176 } | 176 } |
177 | 177 |
178 dragOverHeartbeat = new Runnable() { | 178 dragOverHeartbeat = new Runnable() { |
179 public void run() { | 179 public void run() { |
180 Control control = DropTarget.this.control; | 180 Control control = DropTarget.this.control; |
181 if (control is null || control.isDisposed() || dragOverStart is 0) return; | 181 if (control is null || control.isDisposed() || dragOverStart is 0) return; |
182 long time = System.currentTimeMillis(); | 182 long time = System.currentTimeMillis(); |
183 int delay = DRAGOVER_HYSTERESIS; | 183 int delay = DRAGOVER_HYSTERESIS; |
184 if (time < dragOverStart) { | 184 if (time < dragOverStart) { |
185 delay = (int)(dragOverStart - time); | 185 delay = cast(int)(dragOverStart - time); |
186 } else { | 186 } else { |
187 int allowedOperations = dragOverEvent.operations; | 187 int allowedOperations = dragOverEvent.operations; |
188 TransferData[] allowedTypes = dragOverEvent.dataTypes; | 188 TransferData[] allowedTypes = dragOverEvent.dataTypes; |
189 //pass a copy of data types in to listeners in case application modifies it | 189 //pass a copy of data types in to listeners in case application modifies it |
190 TransferData[] dataTypes = new TransferData[allowedTypes.length]; | 190 TransferData[] dataTypes = new TransferData[allowedTypes.length]; |
192 | 192 |
193 DNDEvent event = new DNDEvent(); | 193 DNDEvent event = new DNDEvent(); |
194 event.widget = dragOverEvent.widget; | 194 event.widget = dragOverEvent.widget; |
195 event.x = dragOverEvent.x; | 195 event.x = dragOverEvent.x; |
196 event.y = dragOverEvent.y; | 196 event.y = dragOverEvent.y; |
197 event.time = (int)time; | 197 event.time = cast(int)time; |
198 event.feedback = DND.FEEDBACK_SELECT; | 198 event.feedback = DND.FEEDBACK_SELECT; |
199 event.dataTypes = dataTypes; | 199 event.dataTypes = dataTypes; |
200 event.dataType = selectedDataType; | 200 event.dataType = selectedDataType; |
201 event.operations = dragOverEvent.operations; | 201 event.operations = dragOverEvent.operations; |
202 event.detail = selectedOperation; | 202 event.detail = selectedOperation; |
263 OS.GetDragMouse(theDrag, mouse, null); | 263 OS.GetDragMouse(theDrag, mouse, null); |
264 int[] theRoot = new int[1]; | 264 int[] theRoot = new int[1]; |
265 OS.GetRootControl(theWindow, theRoot); | 265 OS.GetRootControl(theWindow, theRoot); |
266 int[] theControl = new int[1]; | 266 int[] theControl = new int[1]; |
267 Rect rect = new Rect(); | 267 Rect rect = new Rect(); |
268 OS.GetWindowBounds (theWindow, (short) OS.kWindowContentRgn, rect); | 268 OS.GetWindowBounds (theWindow, cast(short) OS.kWindowContentRgn, rect); |
269 CGPoint inPoint = new CGPoint(); | 269 CGPoint inPoint = new CGPoint(); |
270 inPoint.x = mouse.h - rect.left; | 270 inPoint.x = mouse.h - rect.left; |
271 inPoint.y = mouse.v - rect.top; | 271 inPoint.y = mouse.v - rect.top; |
272 OS.HIViewGetSubviewHit(theRoot[0], inPoint, true, theControl); | 272 OS.HIViewGetSubviewHit(theRoot[0], inPoint, true, theControl); |
273 if (!OS.IsControlEnabled(theControl[0])) return null; | 273 if (!OS.IsControlEnabled(theControl[0])) return null; |
274 Widget widget = display.findWidget(theControl[0]); | 274 Widget widget = display.findWidget(theControl[0]); |
275 if (widget is null) return null; | 275 if (widget is null) return null; |
276 return (DropTarget)widget.getData(DND.DROP_TARGET_KEY); | 276 return cast(DropTarget)widget.getData(DND.DROP_TARGET_KEY); |
277 } | 277 } |
278 /** | 278 /** |
279 * Adds the listener to the collection of listeners who will | 279 * Adds the listener to the collection of listeners who will |
280 * be notified when a drag and drop operation is in progress, by sending | 280 * be notified when a drag and drop operation is in progress, by sending |
281 * it one of the messages defined in the <code>DropTargetListener</code> | 281 * it one of the messages defined in the <code>DropTargetListener</code> |
331 updateDragOverHover(0, null); | 331 updateDragOverHover(0, null); |
332 if (keyOperation is -1) return OS.dragNotAcceptedErr; | 332 if (keyOperation is -1) return OS.dragNotAcceptedErr; |
333 | 333 |
334 DNDEvent event = new DNDEvent(); | 334 DNDEvent event = new DNDEvent(); |
335 event.widget = this; | 335 event.widget = this; |
336 event.time = (int)System.currentTimeMillis(); | 336 event.time = cast(int)System.currentTimeMillis(); |
337 event.detail = DND.DROP_NONE; | 337 event.detail = DND.DROP_NONE; |
338 notifyListeners(DND.DragLeave, event); | 338 notifyListeners(DND.DragLeave, event); |
339 | 339 |
340 event = new DNDEvent(); | 340 event = new DNDEvent(); |
341 if (!setEventData(theDrag, event)) { | 341 if (!setEventData(theDrag, event)) { |
372 // locate all the items with data of the desired type | 372 // locate all the items with data of the desired type |
373 short[] numItems = new short[1]; | 373 short[] numItems = new short[1]; |
374 OS.CountDragItems(theDrag, numItems); | 374 OS.CountDragItems(theDrag, numItems); |
375 for (short i = 0; i < numItems[0]; i++) { | 375 for (short i = 0; i < numItems[0]; i++) { |
376 int[] theItemRef = new int[1]; | 376 int[] theItemRef = new int[1]; |
377 OS.GetDragItemReferenceNumber(theDrag, (short) (i+1), theItemRef); | 377 OS.GetDragItemReferenceNumber(theDrag, cast(short) (i+1), theItemRef); |
378 int[] size = new int[1]; | 378 int[] size = new int[1]; |
379 OS.GetFlavorDataSize(theDrag, theItemRef[0], selectedDataType.type, size); | 379 OS.GetFlavorDataSize(theDrag, theItemRef[0], selectedDataType.type, size); |
380 if (size[0] > 0) { | 380 if (size[0] > 0) { |
381 byte[] buffer = new byte[size[0]]; | 381 byte[] buffer = new byte[size[0]]; |
382 OS.GetFlavorData(theDrag, theItemRef[0], selectedDataType.type, buffer, size, 0); | 382 OS.GetFlavorData(theDrag, theItemRef[0], selectedDataType.type, buffer, size, 0); |
423 if (keyOperation is -1) return OS.dragNotAcceptedErr; | 423 if (keyOperation is -1) return OS.dragNotAcceptedErr; |
424 keyOperation = -1; | 424 keyOperation = -1; |
425 | 425 |
426 DNDEvent event = new DNDEvent(); | 426 DNDEvent event = new DNDEvent(); |
427 event.widget = this; | 427 event.widget = this; |
428 event.time = (int)System.currentTimeMillis(); | 428 event.time = cast(int)System.currentTimeMillis(); |
429 event.detail = DND.DROP_NONE; | 429 event.detail = DND.DROP_NONE; |
430 notifyListeners(DND.DragLeave, event); | 430 notifyListeners(DND.DragLeave, event); |
431 return OS.noErr; | 431 return OS.noErr; |
432 } | 432 } |
433 | 433 |
542 DropTargetListener[] dropListeners = new DropTargetListener[length]; | 542 DropTargetListener[] dropListeners = new DropTargetListener[length]; |
543 int count = 0; | 543 int count = 0; |
544 for (int i = 0; i < length; i++) { | 544 for (int i = 0; i < length; i++) { |
545 Listener listener = listeners[i]; | 545 Listener listener = listeners[i]; |
546 if (listener instanceof DNDListener) { | 546 if (listener instanceof DNDListener) { |
547 dropListeners[count] = (DropTargetListener) ((DNDListener) listener).getEventListener(); | 547 dropListeners[count] = cast(DropTargetListener) (cast(DNDListener) listener).getEventListener(); |
548 count++; | 548 count++; |
549 } | 549 } |
550 } | 550 } |
551 if (count is length) return dropListeners; | 551 if (count is length) return dropListeners; |
552 DropTargetListener[] result = new DropTargetListener[count]; | 552 DropTargetListener[] result = new DropTargetListener[count]; |
696 int[] flavors = new int[10]; | 696 int[] flavors = new int[10]; |
697 int index = -1; | 697 int index = -1; |
698 //Get a unique list of flavors | 698 //Get a unique list of flavors |
699 for (short i = 0; i < numItems[0]; i++) { | 699 for (short i = 0; i < numItems[0]; i++) { |
700 int[] theItemRef = new int[1]; | 700 int[] theItemRef = new int[1]; |
701 OS.GetDragItemReferenceNumber(theDrag, (short) (i+1), theItemRef); | 701 OS.GetDragItemReferenceNumber(theDrag, cast(short) (i+1), theItemRef); |
702 short[] numFlavors = new short[1]; | 702 short[] numFlavors = new short[1]; |
703 OS.CountDragItemFlavors(theDrag, theItemRef[0], numFlavors); | 703 OS.CountDragItemFlavors(theDrag, theItemRef[0], numFlavors); |
704 int[] theType = new int[1]; | 704 int[] theType = new int[1]; |
705 for (int j = 0; j < numFlavors[0]; j++) { | 705 for (int j = 0; j < numFlavors[0]; j++) { |
706 theType[0] = 0; | 706 theType[0] = 0; |
707 if (OS.GetFlavorType(theDrag, theItemRef[0], (short) (j+1), theType) is OS.noErr) { | 707 if (OS.GetFlavorType(theDrag, theItemRef[0], cast(short) (j+1), theType) is OS.noErr) { |
708 bool unique = true; | 708 bool unique = true; |
709 for (int k = 0; k < flavors.length; k++) { | 709 for (int k = 0; k < flavors.length; k++) { |
710 if (flavors[k] is theType[0]) { | 710 if (flavors[k] is theType[0]) { |
711 unique = false; | 711 unique = false; |
712 break; | 712 break; |
752 OS.GetDragMouse(theDrag, mouse, null); | 752 OS.GetDragMouse(theDrag, mouse, null); |
753 | 753 |
754 event.widget = this; | 754 event.widget = this; |
755 event.x = mouse.h; | 755 event.x = mouse.h; |
756 event.y = mouse.v; | 756 event.y = mouse.v; |
757 event.time = (int)System.currentTimeMillis(); | 757 event.time = cast(int)System.currentTimeMillis(); |
758 event.feedback = DND.FEEDBACK_SELECT; | 758 event.feedback = DND.FEEDBACK_SELECT; |
759 event.dataTypes = dataTypes; | 759 event.dataTypes = dataTypes; |
760 event.dataType = dataTypes[0]; | 760 event.dataType = dataTypes[0]; |
761 event.operations = operations; | 761 event.operations = operations; |
762 event.detail = operation; | 762 event.detail = operation; |