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; |