xref: /haiku/src/servers/app/WindowList.h (revision 34227d2c345f87c9eeee09004f31e4713278a0c9)
1e83820edSAxel Dörfler /*
2e83820edSAxel Dörfler  * Copyright (c) 2005, Haiku, Inc.
3e83820edSAxel Dörfler  * Distributed under the terms of the MIT license.
4e83820edSAxel Dörfler  *
5e83820edSAxel Dörfler  * Authors:
6e83820edSAxel Dörfler  *		Axel Dörfler, axeld@pinc-software.de
7e83820edSAxel Dörfler  */
8e83820edSAxel Dörfler #ifndef WINDOW_LIST_H
9e83820edSAxel Dörfler #define WINDOW_LIST_H
10e83820edSAxel Dörfler 
11e83820edSAxel Dörfler 
12e83820edSAxel Dörfler #include <SupportDefs.h>
13e83820edSAxel Dörfler #include <Point.h>
14e83820edSAxel Dörfler 
15e83820edSAxel Dörfler 
16e83820edSAxel Dörfler class WindowLayer;
17e83820edSAxel Dörfler 
18e83820edSAxel Dörfler 
19e83820edSAxel Dörfler class WindowList {
20e83820edSAxel Dörfler 	public:
21e83820edSAxel Dörfler 		WindowList(int32 index = 0);
22e83820edSAxel Dörfler 		~WindowList();
23e83820edSAxel Dörfler 
24e83820edSAxel Dörfler 		void SetIndex(int32 index);
25e83820edSAxel Dörfler 		int32 Index() const { return fIndex; }
26e83820edSAxel Dörfler 
27e83820edSAxel Dörfler 		WindowLayer* FirstWindow() { return fFirstWindow; }
28e83820edSAxel Dörfler 		WindowLayer* LastWindow() { return fLastWindow; }
29e83820edSAxel Dörfler 
30e83820edSAxel Dörfler 		void AddWindow(WindowLayer* window, WindowLayer* before = NULL);
31e83820edSAxel Dörfler 		void RemoveWindow(WindowLayer* window);
32e83820edSAxel Dörfler 
33*34227d2cSAxel Dörfler 		bool HasWindow(WindowLayer* window) const;
34*34227d2cSAxel Dörfler 
35e83820edSAxel Dörfler 	private:
36e83820edSAxel Dörfler 		int32			fIndex;
37e83820edSAxel Dörfler 		WindowLayer*	fFirstWindow;
38e83820edSAxel Dörfler 		WindowLayer*	fLastWindow;
39e83820edSAxel Dörfler };
40e83820edSAxel Dörfler 
41e83820edSAxel Dörfler enum window_lists {
42e83820edSAxel Dörfler 	kAllWindowList = 32,
43*34227d2cSAxel Dörfler 	kSubsetList,
44e83820edSAxel Dörfler 	kWorkingList,
45e83820edSAxel Dörfler };
46e83820edSAxel Dörfler 
47e83820edSAxel Dörfler struct window_anchor {
48e83820edSAxel Dörfler 	window_anchor();
49e83820edSAxel Dörfler 
50e83820edSAxel Dörfler 	WindowLayer*	next;
51e83820edSAxel Dörfler 	WindowLayer*	previous;
52e83820edSAxel Dörfler 	BPoint			position;
53e83820edSAxel Dörfler };
54e83820edSAxel Dörfler 
55e83820edSAxel Dörfler extern const BPoint kInvalidWindowPosition;
56e83820edSAxel Dörfler 
57e83820edSAxel Dörfler #endif	// WINDOW_LIST_H
58