Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9187 → Rev 9186

/programs/develop/cedit/SRC/scroll.ob07
19,17 → 19,16
 
MODULE Scroll;
 
IMPORT G := Graph, K := KolibriOS, U := Utils;
IMPORT G := Graph, K := KolibriOS;
 
CONST
 
ScrollIPC* = 0;
Delay* = 40;
 
TYPE
 
tScroll* = RECORD
vertical, Inc*, Dec*, mouse: BOOLEAN;
vertical, Inc*, Dec*, mouse*: BOOLEAN;
top*, left*,
width*, height*: INTEGER; (* read only *)
btnSize, sliderSize: INTEGER;
39,24 → 38,21
 
 
PROCEDURE create* (vertical: BOOLEAN; width, height: INTEGER; btnSize, sliderSize: INTEGER; VAR scroll: tScroll);
VAR
res: tScroll;
BEGIN
res.vertical := vertical;
res.Inc := FALSE;
res.Dec := FALSE;
res.Slider := -1;
res.mouse := FALSE;
res.left := 0;
res.top := 0;
res.width := width;
res.height := height;
res.btnSize := btnSize;
res.sliderSize := sliderSize;
res.pos := 0;
res.maxVal := 0;
res.canvas := G.CreateCanvas(width, height);
scroll := res
scroll.vertical := vertical;
scroll.Inc := FALSE;
scroll.Dec := FALSE;
scroll.Slider := -1;
scroll.mouse := FALSE;
scroll.left := 0;
scroll.top := 0;
scroll.width := width;
scroll.height := height;
scroll.btnSize := btnSize;
scroll.sliderSize := sliderSize;
scroll.pos := 0;
scroll.maxVal := 0;
scroll.canvas := G.CreateCanvas(width, height)
END create;
 
 
300,6 → 296,11
END MouseMove;
 
 
PROCEDURE between (a, b, c: INTEGER): BOOLEAN;
RETURN (a <= b) & (b <= c)
END between;
 
 
PROCEDURE SendIPC*;
BEGIN
K.SendIPC(K.ThreadID(), ScrollIPC)
310,11 → 311,10
VAR
c, size: INTEGER;
BEGIN
IF ~scroll.mouse THEN
DEC(x, scroll.left);
DEC(y, scroll.top);
scroll.mouse := TRUE;
IF U.between(1, x, scroll.width - 2) & U.between(1, y, scroll.height - 2) THEN
IF between(1, x, scroll.width - 2) & between(1, y, scroll.height - 2) THEN
IF scroll.vertical THEN
c := y;
size := scroll.height
322,13 → 322,15
c := x;
size := scroll.width
END;
IF U.between(scroll.btnSize + scroll.pos - 1, c, scroll.btnSize + scroll.pos + scroll.sliderSize - 1) THEN
IF between(scroll.btnSize + scroll.pos - 1, c, scroll.btnSize + scroll.pos + scroll.sliderSize - 1) THEN
scroll.pos0 := scroll.pos;
scroll.Slider := c
ELSIF U.between(0, c, scroll.btnSize - 1) THEN
ELSE
IF between(0, c, scroll.btnSize - 1) THEN
scroll.Dec := TRUE;
SendIPC
ELSIF U.between(size - scroll.btnSize, c, size - 1) THEN
ELSE
IF between(size - scroll.btnSize, c, size - 1) THEN
scroll.Inc := TRUE;
SendIPC
ELSE
339,6 → 341,7
END
END
END
END
END MouseDown;