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;