summaryrefslogtreecommitdiff
path: root/tvision/examples/sdlg/scrldlg.cpp
blob: 57dca3a617abfb1f4906781bd209925a4fcedae5 (plain)
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
39
40
41
42
43
44
45
46
47
48
#define Uses_ScrollDialog
// =================================================
#define Uses_TDialog
// =================================================
#define Uses_ScrollGroup
// =================================================
#define Uses_TGroup
// =================================================

#define Uses_TScrollBar
#define Uses_TEvent
#define Uses_TKeys
// =================================================
#include <tv.h>
#include "dlg.h"
// =================================================

ScrollDialog::ScrollDialog(const TRect& bounds, const char* aTitle, ushort f) :
	TWindowInit(initFrame),
	TDialog(bounds, aTitle),
	scrollGroup(0)
{
	TScrollBar* hsb = 0;
	TScrollBar* vsb = 0;

	if(f & sbHorizontal)
		hsb = standardScrollBar(sbHorizontal|sbHandleKeyboard);
	if(f & sbVertical)
		vsb = standardScrollBar(sbVertical|sbHandleKeyboard);

	TRect r = getExtent();
	r.grow(-1,-1);
	scrollGroup = new ScrollGroup(r, hsb, vsb);
	scrollGroup->growMode = gfGrowHiX | gfGrowHiY;
	insert(scrollGroup);
}

void ScrollDialog::handleEvent(TEvent& event)
{
	if(event.what == evKeyDown &&
		(event.keyDown.keyCode == kbTab ||
			event.keyDown.keyCode == kbShiftTab))
		{
		scrollGroup->selectNext(Boolean(event.keyDown.keyCode == kbShiftTab));
		clearEvent(event);
		}
	TDialog::handleEvent(event);
}