Subversion Repositories Kolibri OS

Rev

Rev 9200 | Rev 9210 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9200 Rev 9208
Line 22... Line 22...
22
IMPORT G := Graph, K := KolibriOS, U := Utils;
22
IMPORT G := Graph, K := KolibriOS, U := Utils;
Line 23... Line 23...
23
 
23
 
Line 24... Line 24...
24
CONST
24
CONST
25
 
25
 
Line 26... Line 26...
26
	ScrollIPC* = 0;
26
	ScrollIPC* = 0;
Line 27... Line 27...
27
	Delay* = 40;
27
	DELAY = 40;
28
 
28
 
Line 35... Line 35...
35
		btnSize, sliderSize: INTEGER;
35
		btnSize, sliderSize: INTEGER;
36
		pos, Slider, pos0, maxVal*, value*: INTEGER;
36
		pos, Slider, pos0, maxVal*, value*: INTEGER;
37
		canvas*: G.tCanvas
37
		canvas*: G.tCanvas
38
	END;
38
	END;
Line -... Line 39...
-
 
39
 
-
 
40
	tProcedure* = PROCEDURE;
-
 
41
 
-
 
42
VAR
-
 
43
 
-
 
44
	ScrollChange: tProcedure;
-
 
45
	delay: INTEGER;
-
 
46
 
-
 
47
 
-
 
48
PROCEDURE MouseUp (VAR scroll: tScroll);
-
 
49
BEGIN
-
 
50
	scroll.Slider := -1;
-
 
51
	scroll.Inc := FALSE;
-
 
52
	scroll.Dec := FALSE;
-
 
53
	scroll.mouse := FALSE;
-
 
54
END MouseUp;
Line 39... Line 55...
39
 
55
 
40
 
56
 
41
PROCEDURE create* (vertical: BOOLEAN; width, height: INTEGER; btnSize, sliderSize: INTEGER; VAR scroll: tScroll);
57
PROCEDURE create* (vertical: BOOLEAN; width, height: INTEGER; btnSize, sliderSize: INTEGER; VAR scroll: tScroll);
42
VAR
58
VAR
-
 
59
	res: tScroll;
43
	res: tScroll;
60
BEGIN
44
BEGIN
-
 
45
	res.vertical := vertical;
-
 
46
	res.Inc := FALSE;
-
 
47
	res.Dec := FALSE;
-
 
48
	res.Slider := -1;
61
	MouseUp(res);
49
	res.mouse := FALSE;
62
	res.vertical := vertical;
50
	res.left := 0;
63
	res.left := 0;
51
	res.top := 0;
64
	res.top := 0;
52
	res.width := width;
65
	res.width := width;
Line 277... Line 290...
277
	scroll.pos := pos;
290
	scroll.pos := pos;
278
	scroll.value := value
291
	scroll.value := value
279
END setPos;
292
END setPos;
Line 280... Line -...
280
 
-
 
281
 
-
 
282
PROCEDURE isActive* (scroll: tScroll): BOOLEAN;
-
 
283
	RETURN scroll.Inc OR scroll.Dec OR (scroll.Slider # -1)
-
 
284
END isActive;
-
 
285
 
293
 
286
 
294
 
287
PROCEDURE MouseMove* (VAR scroll: tScroll; x, y: INTEGER);
295
PROCEDURE MouseMove (VAR scroll: tScroll; x, y: INTEGER);
288
VAR
296
VAR
289
	c: INTEGER;
297
	c: INTEGER;
290
BEGIN
298
BEGIN
Line 298... Line 306...
298
		paint(scroll)
306
		paint(scroll)
299
	END
307
	END
300
END MouseMove;
308
END MouseMove;
Line 301... Line 309...
301
 
309
 
302
 
310
 
303
PROCEDURE SendIPC*;
311
PROCEDURE SendIPC;
304
BEGIN
312
BEGIN
Line -... Line 313...
-
 
313
	K.SendIPC(K.ThreadID(), ScrollIPC)
-
 
314
END SendIPC;
-
 
315
 
-
 
316
 
-
 
317
PROCEDURE receiveIPC* (VAR IPC: ARRAY OF INTEGER; VAR scrollIPC: BOOLEAN);
-
 
318
BEGIN
-
 
319
	scrollIPC := FALSE;
-
 
320
	ScrollChange;
-
 
321
	IF 0 IN K.MouseState() THEN
-
 
322
		WHILE (0 IN K.MouseState()) & (delay > 0) DO
-
 
323
			K.Pause(1);
-
 
324
    		DEC(delay)
-
 
325
		END;
-
 
326
		IF delay = 0 THEN
-
 
327
			IPC[0] := 0;
-
 
328
			IPC[1] := 0;
-
 
329
			scrollIPC := TRUE;
-
 
330
    		SendIPC;
-
 
331
    		delay := 4
-
 
332
		ELSE
-
 
333
			delay := DELAY
-
 
334
		END
-
 
335
	ELSE
-
 
336
		delay := DELAY
305
	K.SendIPC(K.ThreadID(), ScrollIPC)
337
	END
306
END SendIPC;
338
END receiveIPC;
307
 
339
 
308
 
340
 
309
PROCEDURE MouseDown* (VAR scroll: tScroll; x, y: INTEGER);
341
PROCEDURE MouseDown (VAR scroll: tScroll; x, y: INTEGER);
310
VAR
342
VAR
Line 340... Line 372...
340
		END
372
		END
341
	END
373
	END
342
END MouseDown;
374
END MouseDown;
Line 343... Line 375...
343
 
375
 
-
 
376
 
-
 
377
PROCEDURE mouse* (VAR scroll: tScroll);
-
 
378
VAR
344
 
379
	msState: SET;
-
 
380
	x, y: INTEGER;
345
PROCEDURE MouseUp* (VAR scroll: tScroll);
381
BEGIN
346
BEGIN
382
	K.mouse(msState, x, y);
347
	IF scroll.mouse THEN
383
	IF 0 IN msState THEN
348
		scroll.Slider := -1;
384
		MouseDown(scroll, x, y);
349
		scroll.Inc := FALSE;
385
		MouseMove(scroll, x, y)
350
		scroll.Dec := FALSE;
386
	ELSIF scroll.mouse THEN
351
		scroll.mouse := FALSE;
387
		MouseUp(scroll);
352
		paint(scroll)
388
		paint(scroll)
-
 
389
	END
-
 
390
END mouse;
-
 
391
 
-
 
392
 
-
 
393
PROCEDURE init* (_ScrollChange: tProcedure);
-
 
394
BEGIN
-
 
395
	delay := DELAY;
Line 353... Line 396...
353
	END
396
	ScrollChange := _ScrollChange
354
END MouseUp;
397
END init;