xref: /haiku/src/servers/app/Workspace.h (revision 02354704729d38c3b078c696adc1bbbd33cbcf72)
1 /*
2  * Copyright 2005-2013, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  */
8 #ifndef WORKSPACE_H
9 #define WORKSPACE_H
10 
11 
12 #include <InterfaceDefs.h>
13 
14 
15 class Desktop;
16 class Window;
17 
18 
19 /*!	Workspace objects are intended to be short-lived. You create them while
20 	already holding a lock to the Desktop read-write lock and then you can use
21 	them to query information, and then you destroy them again, for example by
22 	letting them go out of scope.
23 */
24 class Workspace {
25 public:
26 								Workspace(Desktop& desktop, int32 index,
27 									bool readOnly = false);
28 								~Workspace();
29 
30 			const rgb_color&	Color() const;
31 			void				SetColor(const rgb_color& color,
32 									bool makeDefault);
33 			bool				IsCurrent() const
34 									{ return fCurrentWorkspace; }
35 
36 			status_t			GetNextWindow(Window*& _window,
37 									BPoint& _leftTop);
38 			status_t			GetPreviousWindow(Window*& _window,
39 									BPoint& _leftTop);
40 			void				RewindWindows();
41 
42 	class Private;
43 
44 private:
45 			Workspace::Private&	fWorkspace;
46 			Desktop&			fDesktop;
47 			Window*				fCurrent;
48 			bool				fCurrentWorkspace;
49 };
50 
51 
52 #endif	/* WORKSPACE_H */
53