comparison dwt/dnd/DragSource.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
173 } 173 }
174 }); 174 });
175 175
176 Object effect = control.getData(DEFAULT_DRAG_SOURCE_EFFECT); 176 Object effect = control.getData(DEFAULT_DRAG_SOURCE_EFFECT);
177 if (effect instanceof DragSourceEffect) { 177 if (effect instanceof DragSourceEffect) {
178 dragEffect = (DragSourceEffect) effect; 178 dragEffect = cast(DragSourceEffect) effect;
179 } else if (control instanceof Tree) { 179 } else if (control instanceof Tree) {
180 dragEffect = new TreeDragSourceEffect((Tree) control); 180 dragEffect = new TreeDragSourceEffect(cast(Tree) control);
181 } else if (control instanceof Table) { 181 } else if (control instanceof Table) {
182 dragEffect = new TableDragSourceEffect((Table) control); 182 dragEffect = new TableDragSourceEffect(cast(Table) control);
183 } 183 }
184 } 184 }
185 185
186 static int checkStyle (int style) { 186 static int checkStyle (int style) {
187 if (style is DWT.NONE) return DND.DROP_MOVE; 187 if (style is DWT.NONE) return DND.DROP_MOVE;
198 if (dragSendRefCon is 0) return null; 198 if (dragSendRefCon is 0) return null;
199 Display display = Display.findDisplay(Thread.currentThread()); 199 Display display = Display.findDisplay(Thread.currentThread());
200 if (display is null || display.isDisposed()) return null; 200 if (display is null || display.isDisposed()) return null;
201 Widget widget = display.findWidget(dragSendRefCon); 201 Widget widget = display.findWidget(dragSendRefCon);
202 if (widget is null) return null; 202 if (widget is null) return null;
203 return (DragSource)widget.getData(DND.DRAG_SOURCE_KEY); 203 return cast(DragSource)widget.getData(DND.DRAG_SOURCE_KEY);
204 } 204 }
205 205
206 /** 206 /**
207 * Adds the listener to the collection of listeners who will 207 * Adds the listener to the collection of listeners who will
208 * be notified when a drag and drop operation is in progress, by sending 208 * be notified when a drag and drop operation is in progress, by sending
261 261
262 int[] theDrag = new int[1]; 262 int[] theDrag = new int[1];
263 if (OS.NewDrag(theDrag) !is OS.noErr) { 263 if (OS.NewDrag(theDrag) !is OS.noErr) {
264 event = new DNDEvent(); 264 event = new DNDEvent();
265 event.widget = this; 265 event.widget = this;
266 event.time = (int)System.currentTimeMillis(); 266 event.time = cast(int)System.currentTimeMillis();
267 event.doit = false; 267 event.doit = false;
268 event.detail = DND.DROP_NONE; 268 event.detail = DND.DROP_NONE;
269 notifyListeners(DND.DragEnd, event); 269 notifyListeners(DND.DragEnd, event);
270 return; 270 return;
271 } 271 }
280 if (transfer instanceof FileTransfer) { 280 if (transfer instanceof FileTransfer) {
281 TransferData transferData = new TransferData(); 281 TransferData transferData = new TransferData();
282 transferData.type = types[0]; 282 transferData.type = types[0];
283 DNDEvent event2 = new DNDEvent(); 283 DNDEvent event2 = new DNDEvent();
284 event2.widget = this; 284 event2.widget = this;
285 event2.time = (int)System.currentTimeMillis(); 285 event2.time = cast(int)System.currentTimeMillis();
286 event2.dataType = transferData; 286 event2.dataType = transferData;
287 notifyListeners(DND.DragSetData, event2); 287 notifyListeners(DND.DragSetData, event2);
288 if (event2.data !is null) { 288 if (event2.data !is null) {
289 for (int j = 0; j < types.length; j++) { 289 for (int j = 0; j < types.length; j++) {
290 transferData.type = types[j]; 290 transferData.type = types[j];
309 309
310 int theRegion = 0; 310 int theRegion = 0;
311 Image newImage = null; 311 Image newImage = null;
312 try { 312 try {
313 theRegion = OS.NewRgn(); 313 theRegion = OS.NewRgn();
314 OS.SetRectRgn(theRegion, (short)(pt.h), (short)(pt.v), (short)(pt.h+20), (short)(pt.v+20)); 314 OS.SetRectRgn(theRegion, cast(short)(pt.h), cast(short)(pt.v), cast(short)(pt.h+20), cast(short)(pt.v+20));
315 315
316 int operations = opToOsOp(getStyle()); 316 int operations = opToOsOp(getStyle());
317 //set operations twice - local and not local 317 //set operations twice - local and not local
318 OS.SetDragAllowableActions(theDrag[0], operations, true); 318 OS.SetDragAllowableActions(theDrag[0], operations, true);
319 OS.SetDragAllowableActions(theDrag[0], operations, false); 319 OS.SetDragAllowableActions(theDrag[0], operations, false);
337 } 337 }
338 OS.SetDragImageWithCGImage(theDrag[0], image.handle, imageOffsetPt, 0); 338 OS.SetDragImageWithCGImage(theDrag[0], image.handle, imageOffsetPt, 0);
339 } 339 }
340 EventRecord theEvent = new EventRecord(); 340 EventRecord theEvent = new EventRecord();
341 theEvent.message = OS.kEventMouseMoved; 341 theEvent.message = OS.kEventMouseMoved;
342 theEvent.modifiers = (short)OS.GetCurrentEventKeyModifiers(); 342 theEvent.modifiers = cast(short)OS.GetCurrentEventKeyModifiers();
343 theEvent.what = (short)OS.osEvt; 343 theEvent.what = cast(short)OS.osEvt;
344 theEvent.where_h = pt.h; 344 theEvent.where_h = pt.h;
345 theEvent.where_v = pt.v; 345 theEvent.where_v = pt.v;
346 int result = OS.TrackDrag(theDrag[0], theEvent, theRegion); 346 int result = OS.TrackDrag(theDrag[0], theEvent, theRegion);
347 int operation = DND.DROP_NONE; 347 int operation = DND.DROP_NONE;
348 if (result is OS.noErr) { 348 if (result is OS.noErr) {
350 OS.GetDragDropAction(theDrag[0], outAction); 350 OS.GetDragDropAction(theDrag[0], outAction);
351 operation = osOpToOp(outAction[0]); 351 operation = osOpToOp(outAction[0]);
352 } 352 }
353 event = new DNDEvent(); 353 event = new DNDEvent();
354 event.widget = this; 354 event.widget = this;
355 event.time = (int)System.currentTimeMillis(); 355 event.time = cast(int)System.currentTimeMillis();
356 event.doit = result is OS.noErr; 356 event.doit = result is OS.noErr;
357 event.detail = operation; 357 event.detail = operation;
358 notifyListeners(DND.DragEnd, event); 358 notifyListeners(DND.DragEnd, event);
359 } finally { 359 } finally {
360 if (theRegion !is 0) OS.DisposeRgn(theRegion); 360 if (theRegion !is 0) OS.DisposeRgn(theRegion);
367 if (theType is 0) return OS.badDragFlavorErr; 367 if (theType is 0) return OS.badDragFlavorErr;
368 TransferData transferData = new TransferData(); 368 TransferData transferData = new TransferData();
369 transferData.type = theType; 369 transferData.type = theType;
370 DNDEvent event = new DNDEvent(); 370 DNDEvent event = new DNDEvent();
371 event.widget = this; 371 event.widget = this;
372 event.time = (int)System.currentTimeMillis(); 372 event.time = cast(int)System.currentTimeMillis();
373 event.dataType = transferData; 373 event.dataType = transferData;
374 notifyListeners(DND.DragSetData, event); 374 notifyListeners(DND.DragSetData, event);
375 Transfer transfer = null; 375 Transfer transfer = null;
376 for (int i = 0; i < transferAgents.length; i++) { 376 for (int i = 0; i < transferAgents.length; i++) {
377 Transfer transferAgent = transferAgents[i]; 377 Transfer transferAgent = transferAgents[i];
423 DragSourceListener[] dragListeners = new DragSourceListener[length]; 423 DragSourceListener[] dragListeners = new DragSourceListener[length];
424 int count = 0; 424 int count = 0;
425 for (int i = 0; i < length; i++) { 425 for (int i = 0; i < length; i++) {
426 Listener listener = listeners[i]; 426 Listener listener = listeners[i];
427 if (listener instanceof DNDListener) { 427 if (listener instanceof DNDListener) {
428 dragListeners[count] = (DragSourceListener) ((DNDListener) listener).getEventListener(); 428 dragListeners[count] = cast(DragSourceListener) (cast(DNDListener) listener).getEventListener();
429 count++; 429 count++;
430 } 430 }
431 } 431 }
432 if (count is length) return dragListeners; 432 if (count is length) return dragListeners;
433 DragSourceListener[] result = new DragSourceListener[count]; 433 DragSourceListener[] result = new DragSourceListener[count];