File: DragView.sc

package info (click to toggle)
supercollider 1%3A3.13.0%2Brepack-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 80,296 kB
  • sloc: cpp: 476,363; lisp: 84,680; ansic: 77,685; sh: 25,509; python: 7,909; makefile: 3,440; perl: 1,964; javascript: 974; xml: 826; java: 677; 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 }
}