xref: /haiku/src/servers/app/stackandtile/Stacking.h (revision 19ae20e67e91fc09cc9fc5c0e60e21e24e7a53eb)
1*27f5d579SClemens Zeidler /*
2*27f5d579SClemens Zeidler  * Copyright 2010, Haiku.
3*27f5d579SClemens Zeidler  * Distributed under the terms of the MIT License.
4*27f5d579SClemens Zeidler  *
5*27f5d579SClemens Zeidler  * Authors:
6*27f5d579SClemens Zeidler  *		Clemens Zeidler <haiku@clemens-zeidler.de>
7*27f5d579SClemens Zeidler  */
8*27f5d579SClemens Zeidler #ifndef STACKING_H
9*27f5d579SClemens Zeidler #define STACKING_H
10*27f5d579SClemens Zeidler 
11*27f5d579SClemens Zeidler #include "ObjectList.h"
12*27f5d579SClemens Zeidler #include "StackAndTile.h"
13*27f5d579SClemens Zeidler 
14*27f5d579SClemens Zeidler 
15*27f5d579SClemens Zeidler class SATWindow;
16*27f5d579SClemens Zeidler 
17*27f5d579SClemens Zeidler 
18*27f5d579SClemens Zeidler class StackingEventHandler
19*27f5d579SClemens Zeidler {
20*27f5d579SClemens Zeidler public:
21*27f5d579SClemens Zeidler 	static bool				HandleMessage(SATWindow* sender,
22*27f5d579SClemens Zeidler 								BPrivate::LinkReceiver& link,
23*27f5d579SClemens Zeidler 								BPrivate::LinkSender& reply);
24*27f5d579SClemens Zeidler };
25*27f5d579SClemens Zeidler 
26*27f5d579SClemens Zeidler 
27*27f5d579SClemens Zeidler class SATStacking : public SATSnappingBehaviour {
28*27f5d579SClemens Zeidler public:
29*27f5d579SClemens Zeidler 							SATStacking(SATWindow* window);
30*27f5d579SClemens Zeidler 							~SATStacking();
31*27f5d579SClemens Zeidler 
32*27f5d579SClemens Zeidler 		bool				FindSnappingCandidates(SATGroup* group);
33*27f5d579SClemens Zeidler 		bool				JoinCandidates();
34*27f5d579SClemens Zeidler 		void				DoWindowLayout();
35*27f5d579SClemens Zeidler 
36*27f5d579SClemens Zeidler 		void				RemovedFromArea(WindowArea* area);
37*27f5d579SClemens Zeidler 		void				WindowLookChanged(window_look look);
38*27f5d579SClemens Zeidler private:
39*27f5d579SClemens Zeidler 		bool				_IsStackableWindow(Window* window);
40*27f5d579SClemens Zeidler 		void				_ClearSearchResult();
41*27f5d579SClemens Zeidler 		void				_HighlightWindows(bool highlight = true);
42*27f5d579SClemens Zeidler 
43*27f5d579SClemens Zeidler 		SATWindow*			fSATWindow;
44*27f5d579SClemens Zeidler 
45*27f5d579SClemens Zeidler 		SATWindow*			fStackingParent;
46*27f5d579SClemens Zeidler };
47*27f5d579SClemens Zeidler 
48*27f5d579SClemens Zeidler #endif
49