File: DragView.sc

package info (click to toggle)
supercollider 1%3A3.11.2%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 71,152 kB
  • sloc: cpp: 387,846; lisp: 80,328; ansic: 76,515; sh: 22,779; python: 7,932; makefile: 2,333; perl: 1,123; javascript: 915; java: 677; xml: 582; yacc: 314; lex: 175; objc: 152; ruby: 136
file content (38 lines) | stat: -rw-r--r-- 1,001 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
DragView : TextField {
	*new { arg parent, bounds; ^super.new(parent,bounds).initQDragView }

	initQDragView {
		var plt = this.palette;
		plt.base = plt.window;
		this.palette = plt;
		this.setProperty(\readOnly, true);
	}

	// override View.mouseDownEvent to initiate drag without keyboard modifier
	mouseDownEvent { arg x, y, modifiers, buttonNumber, clickCount;
		// Try to get drag obj and start a drag.
		// If successful, block further processing of this event.
		if( this.beginDrag( x, y ) ) { ^true };

		// else continue to handle mouse down event
		modifiers = QKeyModifiers.toCocoa(modifiers);
		^this.mouseDown( x, y, modifiers, buttonNumber, clickCount );
	}

	defaultGetDrag { ^nil }
	defaultCanReceiveDrag { ^false }
	defaultReceiveDrag { }
}

DragSource : DragView {
	defaultGetDrag { ^object }
}

DragSink : DragView {
	defaultCanReceiveDrag { ^true }
	defaultReceiveDrag { this.object = View.currentDrag; action.value(this); }
}

DragBoth : DragSink {
	defaultGetDrag { ^object }
}