114d02d22SAxel Dörfler/*
2ebf4cbe6SAxel Dörfler * Copyright 2001-2015, Haiku, Inc. All rights reserved.
314d02d22SAxel Dörfler * Distributed under the terms of the MIT License.
414d02d22SAxel Dörfler */
5b95458fdSAdi Oanca#ifndef	_WINDOW_H
6b95458fdSAdi Oanca#define	_WINDOW_H
7b95458fdSAdi Oanca
814d02d22SAxel Dörfler
9b95458fdSAdi Oanca#include <Looper.h>
10b95458fdSAdi Oanca#include <StorageDefs.h>
11e0c894a0SDarkWyrm#include <View.h>
12b95458fdSAdi Oanca
1348ae3e38SAxel Dörfler
1414d02d22SAxel Dörflerclass BButton;
1514d02d22SAxel Dörflerclass BMenuBar;
1614d02d22SAxel Dörflerclass BMenuItem;
1714d02d22SAxel Dörflerclass BMessage;
1814d02d22SAxel Dörflerclass BMessageRunner;
1914d02d22SAxel Dörflerclass BMessenger;
2014d02d22SAxel Dörflerclass BView;
2114d02d22SAxel Dörfler
22dd10337fSAxel Dörflernamespace BPrivate {
23dd10337fSAxel Dörfler	class PortLink;
24dd10337fSAxel Dörfler};
25b95458fdSAdi Oanca
26b95458fdSAdi Oanca
27b95458fdSAdi Oancaenum window_type {
2889208c77SStephan Aßmus	B_UNTYPED_WINDOW					= 0,
294198ccecSMichael Lotz	B_TITLED_WINDOW						= 1,
304198ccecSMichael Lotz	B_MODAL_WINDOW						= 3,
3189208c77SStephan Aßmus	B_DOCUMENT_WINDOW					= 11,
3289208c77SStephan Aßmus	B_BORDERED_WINDOW					= 20,
3389208c77SStephan Aßmus	B_FLOATING_WINDOW					= 21
34b95458fdSAdi Oanca};
35b95458fdSAdi Oanca
36b95458fdSAdi Oancaenum window_look {
3789208c77SStephan Aßmus	B_BORDERED_WINDOW_LOOK				= 20,
3889208c77SStephan Aßmus	B_NO_BORDER_WINDOW_LOOK				= 19,
3989208c77SStephan Aßmus	B_TITLED_WINDOW_LOOK				= 1,
4089208c77SStephan Aßmus	B_DOCUMENT_WINDOW_LOOK				= 11,
4189208c77SStephan Aßmus	B_MODAL_WINDOW_LOOK					= 3,
4289208c77SStephan Aßmus	B_FLOATING_WINDOW_LOOK				= 7
43b95458fdSAdi Oanca};
44b95458fdSAdi Oanca
45b95458fdSAdi Oancaenum window_feel {
4689208c77SStephan Aßmus	B_NORMAL_WINDOW_FEEL				= 0,
4789208c77SStephan Aßmus	B_MODAL_SUBSET_WINDOW_FEEL			= 2,
4889208c77SStephan Aßmus	B_MODAL_APP_WINDOW_FEEL				= 1,
4989208c77SStephan Aßmus	B_MODAL_ALL_WINDOW_FEEL				= 3,
5089208c77SStephan Aßmus	B_FLOATING_SUBSET_WINDOW_FEEL		= 5,
5189208c77SStephan Aßmus	B_FLOATING_APP_WINDOW_FEEL			= 4,
5289208c77SStephan Aßmus	B_FLOATING_ALL_WINDOW_FEEL			= 6
53b95458fdSAdi Oanca};
54b95458fdSAdi Oanca
55b95458fdSAdi Oancaenum window_alignment {
56b95458fdSAdi Oanca	B_BYTE_ALIGNMENT	= 0,
57b95458fdSAdi Oanca	B_PIXEL_ALIGNMENT	= 1
58b95458fdSAdi Oanca};
59b95458fdSAdi Oanca
6014d02d22SAxel Dörfler// window flags
61b95458fdSAdi Oancaenum {
62e343673aSStephan Aßmus	B_NOT_MOVABLE						= 0x00000001,
63e343673aSStephan Aßmus	B_NOT_CLOSABLE						= 0x00000020,
64e343673aSStephan Aßmus	B_NOT_ZOOMABLE						= 0x00000040,
65e343673aSStephan Aßmus	B_NOT_MINIMIZABLE					= 0x00004000,
66e343673aSStephan Aßmus	B_NOT_RESIZABLE						= 0x00000002,
67e343673aSStephan Aßmus	B_NOT_H_RESIZABLE					= 0x00000004,
68e343673aSStephan Aßmus	B_NOT_V_RESIZABLE					= 0x00000008,
69e343673aSStephan Aßmus	B_AVOID_FRONT						= 0x00000080,
70e343673aSStephan Aßmus	B_AVOID_FOCUS						= 0x00002000,
71e343673aSStephan Aßmus	B_WILL_ACCEPT_FIRST_CLICK			= 0x00000010,
72e343673aSStephan Aßmus	B_OUTLINE_RESIZE					= 0x00001000,
73e343673aSStephan Aßmus	B_NO_WORKSPACE_ACTIVATION			= 0x00000100,
74e343673aSStephan Aßmus	B_NOT_ANCHORED_ON_ACTIVATE			= 0x00020000,
75e343673aSStephan Aßmus	B_ASYNCHRONOUS_CONTROLS				= 0x00080000,
76e343673aSStephan Aßmus	B_QUIT_ON_WINDOW_CLOSE				= 0x00100000,
77e343673aSStephan Aßmus	B_SAME_POSITION_IN_ALL_WORKSPACES	= 0x00200000,
78e343673aSStephan Aßmus	B_AUTO_UPDATE_SIZE_LIMITS			= 0x00400000,
79e343673aSStephan Aßmus	B_CLOSE_ON_ESCAPE					= 0x00800000,
80e343673aSStephan Aßmus	B_NO_SERVER_SIDE_WINDOW_MODIFIERS	= 0x00000200
81b95458fdSAdi Oanca};
82b95458fdSAdi Oanca
8389208c77SStephan Aßmus#define B_CURRENT_WORKSPACE				0
8489208c77SStephan Aßmus#define B_ALL_WORKSPACES				0xffffffff
85b95458fdSAdi Oanca
868e96ec34SAxel Dörfler// MoveOnScreen() flags
878e96ec34SAxel Dörflerenum {
888e96ec34SAxel Dörfler	B_DO_NOT_RESIZE_TO_FIT				= 0x0001,
898e96ec34SAxel Dörfler	B_MOVE_IF_PARTIALLY_OFFSCREEN		= 0x0002
908e96ec34SAxel Dörfler};
918e96ec34SAxel Dörfler
92b95458fdSAdi Oanca
93b95458fdSAdi Oancaclass BWindow : public BLooper {
94b95458fdSAdi Oancapublic:
9589208c77SStephan Aßmus								BWindow(BRect frame, const char* title,
9689208c77SStephan Aßmus									window_type type, uint32 flags,
9789208c77SStephan Aßmus									uint32 workspace = B_CURRENT_WORKSPACE);
9889208c77SStephan Aßmus								BWindow(BRect frame, const char* title,
9989208c77SStephan Aßmus									window_look look, window_feel feel,
10089208c77SStephan Aßmus									uint32 flags, uint32 workspace
10189208c77SStephan Aßmus										= B_CURRENT_WORKSPACE);
10289208c77SStephan Aßmus	virtual						~BWindow();
10389208c77SStephan Aßmus
10489208c77SStephan Aßmus								BWindow(BMessage* archive);
10589208c77SStephan Aßmus	static	BArchivable*		Instantiate(BMessage* archive);
10689208c77SStephan Aßmus	virtual	status_t			Archive(BMessage* archive,
10789208c77SStephan Aßmus									bool deep = true) const;
10889208c77SStephan Aßmus
10989208c77SStephan Aßmus	virtual	void				Quit();
11089208c77SStephan Aßmus			void				Close() { Quit(); }
11189208c77SStephan Aßmus
11289208c77SStephan Aßmus			void				AddChild(BView* child, BView* before = NULL);
1131d6c7b6cSAlex Wilson			void				AddChild(BLayoutItem* child);
11489208c77SStephan Aßmus			bool				RemoveChild(BView* child);
11589208c77SStephan Aßmus			int32				CountChildren() const;
11689208c77SStephan Aßmus			BView*				ChildAt(int32 index) const;
11789208c77SStephan Aßmus
11889208c77SStephan Aßmus	virtual	void				DispatchMessage(BMessage* message,
11989208c77SStephan Aßmus									BHandler* handler);
12089208c77SStephan Aßmus	virtual	void				MessageReceived(BMessage* message);
12189208c77SStephan Aßmus	virtual	void				FrameMoved(BPoint newPosition);
12289208c77SStephan Aßmus	virtual void				WorkspacesChanged(uint32 oldWorkspaces,
12389208c77SStephan Aßmus									uint32 newWorkspaces);
12489208c77SStephan Aßmus	virtual void				WorkspaceActivated(int32 workspace,
12589208c77SStephan Aßmus									bool state);
12689208c77SStephan Aßmus	virtual	void				FrameResized(float newWidth, float newHeight);
12789208c77SStephan Aßmus	virtual void				Minimize(bool minimize);
12889208c77SStephan Aßmus	virtual	void				Zoom(BPoint origin, float width, float height);
12989208c77SStephan Aßmus			void				Zoom();
13089208c77SStephan Aßmus			void				SetZoomLimits(float maxWidth, float maxHeight);
13189208c77SStephan Aßmus	virtual void				ScreenChanged(BRect screenSize,
132323523c4SJohn Scipione									color_space depth);
13389208c77SStephan Aßmus
13489208c77SStephan Aßmus			void				SetPulseRate(bigtime_t rate);
13589208c77SStephan Aßmus			bigtime_t			PulseRate() const;
13689208c77SStephan Aßmus
13789208c77SStephan Aßmus			void				AddShortcut(uint32 key, uint32 modifiers,
13889208c77SStephan Aßmus									BMessage* message);
13989208c77SStephan Aßmus			void				AddShortcut(uint32 key, uint32 modifiers,
14089208c77SStephan Aßmus									BMessage* message, BHandler* target);
1410619f34bSOliver Tappe			bool				HasShortcut(uint32 key, uint32 modifiers);
14289208c77SStephan Aßmus			void				RemoveShortcut(uint32 key, uint32 modifiers);
14389208c77SStephan Aßmus
14489208c77SStephan Aßmus			void				SetDefaultButton(BButton* button);
14589208c77SStephan Aßmus			BButton*			DefaultButton() const;
14689208c77SStephan Aßmus
14789208c77SStephan Aßmus	virtual	void				MenusBeginning();
14889208c77SStephan Aßmus	virtual	void				MenusEnded();
14989208c77SStephan Aßmus
15089208c77SStephan Aßmus			bool				NeedsUpdate() const;
15189208c77SStephan Aßmus			void				UpdateIfNeeded();
15289208c77SStephan Aßmus
15389208c77SStephan Aßmus			BView*				FindView(const char* viewName) const;
15489208c77SStephan Aßmus			BView*				FindView(BPoint) const;
15589208c77SStephan Aßmus			BView*				CurrentFocus() const;
15689208c77SStephan Aßmus
15789208c77SStephan Aßmus			void				Activate(bool = true);
1581f424632SJohn Scipione	virtual	void				WindowActivated(bool focus);
15989208c77SStephan Aßmus
16089208c77SStephan Aßmus			void				ConvertToScreen(BPoint* point) const;
16189208c77SStephan Aßmus			BPoint				ConvertToScreen(BPoint point) const;
16289208c77SStephan Aßmus			void				ConvertFromScreen(BPoint* point) const;
16389208c77SStephan Aßmus			BPoint				ConvertFromScreen(BPoint point) const;
16489208c77SStephan Aßmus			void				ConvertToScreen(BRect* rect) const;
16589208c77SStephan Aßmus			BRect				ConvertToScreen(BRect rect) const;
16689208c77SStephan Aßmus			void				ConvertFromScreen(BRect* rect) const;
16789208c77SStephan Aßmus			BRect				ConvertFromScreen(BRect rect) const;
16889208c77SStephan Aßmus
16989208c77SStephan Aßmus			void				MoveBy(float dx, float dy);
17089208c77SStephan Aßmus			void				MoveTo(BPoint);
17189208c77SStephan Aßmus			void				MoveTo(float x, float y);
17289208c77SStephan Aßmus			void				ResizeBy(float dx, float dy);
17389208c77SStephan Aßmus			void				ResizeTo(float width, float height);
17499b4affaSAxel Dörfler			void				ResizeToPreferred();
17589208c77SStephan Aßmus
176f3decd20SJohn Scipione			void				CenterIn(const BRect& rect);
177f3decd20SJohn Scipione			void				CenterOnScreen();
178f3decd20SJohn Scipione			void				CenterOnScreen(screen_id id);
1798e96ec34SAxel Dörfler			void				MoveOnScreen(uint32 flags = 0);
18089208c77SStephan Aßmus
18189208c77SStephan Aßmus	virtual	void				Show();
18289208c77SStephan Aßmus	virtual	void				Hide();
18389208c77SStephan Aßmus			bool				IsHidden() const;
18489208c77SStephan Aßmus			bool				IsMinimized() const;
18589208c77SStephan Aßmus
18689208c77SStephan Aßmus			void				Flush() const;
18789208c77SStephan Aßmus			void				Sync() const;
18889208c77SStephan Aßmus
18989208c77SStephan Aßmus			status_t			SendBehind(const BWindow* window);
19089208c77SStephan Aßmus
19189208c77SStephan Aßmus			void				DisableUpdates();
19289208c77SStephan Aßmus			void				EnableUpdates();
19389208c77SStephan Aßmus
19489208c77SStephan Aßmus			void				BeginViewTransaction();
19589208c77SStephan Aßmus									// referred as OpenViewTransaction()
19689208c77SStephan Aßmus									// in BeBook
19789208c77SStephan Aßmus			void				EndViewTransaction();
19889208c77SStephan Aßmus									// referred as CommitViewTransaction()
19989208c77SStephan Aßmus									// in BeBook
20009749e95SAxel Dörfler			bool				InViewTransaction() const;
20189208c77SStephan Aßmus
20289208c77SStephan Aßmus			BRect				Bounds() const;
20389208c77SStephan Aßmus			BRect				Frame() const;
20489208c77SStephan Aßmus			BRect				DecoratorFrame() const;
20589208c77SStephan Aßmus			BSize				Size() const;
20689208c77SStephan Aßmus			const char*			Title() const;
20789208c77SStephan Aßmus			void				SetTitle(const char* title);
20889208c77SStephan Aßmus			bool				IsFront() const;
20989208c77SStephan Aßmus			bool				IsActive() const;
21089208c77SStephan Aßmus
21189208c77SStephan Aßmus			void				SetKeyMenuBar(BMenuBar* bar);
21289208c77SStephan Aßmus			BMenuBar*			KeyMenuBar() const;
21389208c77SStephan Aßmus
21489208c77SStephan Aßmus			void				SetSizeLimits(float minWidth, float maxWidth,
21589208c77SStephan Aßmus									float minHeight, float maxHeight);
21689208c77SStephan Aßmus			void				GetSizeLimits(float* minWidth, float* maxWidth,
21789208c77SStephan Aßmus									float* minHeight, float* maxHeight);
21858bee544SIngo Weinhold			void				UpdateSizeLimits();
21989208c77SStephan Aßmus
22089208c77SStephan Aßmus			status_t			SetDecoratorSettings(const BMessage& settings);
22189208c77SStephan Aßmus			status_t			GetDecoratorSettings(BMessage* settings) const;
22289208c77SStephan Aßmus
22389208c77SStephan Aßmus			uint32				Workspaces() const;
22489208c77SStephan Aßmus			void				SetWorkspaces(uint32);
22589208c77SStephan Aßmus
22689208c77SStephan Aßmus			BView*				LastMouseMovedView() const;
22789208c77SStephan Aßmus
22889208c77SStephan Aßmus	virtual BHandler*			ResolveSpecifier(BMessage* message,
22989208c77SStephan Aßmus									int32 index, BMessage* specifier,
230323523c4SJohn Scipione									int32 what, const char* property);
23189208c77SStephan Aßmus	virtual status_t			GetSupportedSuites(BMessage* data);
23289208c77SStephan Aßmus
23389208c77SStephan Aßmus			status_t			AddToSubset(BWindow* window);
23489208c77SStephan Aßmus			status_t			RemoveFromSubset(BWindow* window);
23589208c77SStephan Aßmus
23689208c77SStephan Aßmus	virtual status_t			Perform(perform_code code, void* data);
237b30e9021SStephan Aßmus
23889208c77SStephan Aßmus			status_t			SetType(window_type type);
23989208c77SStephan Aßmus			window_type			Type() const;
240b30e9021SStephan Aßmus
24189208c77SStephan Aßmus			status_t			SetLook(window_look look);
24289208c77SStephan Aßmus			window_look			Look() const;
24389208c77SStephan Aßmus
24489208c77SStephan Aßmus			status_t			SetFeel(window_feel feel);
24589208c77SStephan Aßmus			window_feel			Feel() const;
246b30e9021SStephan Aßmus
24789208c77SStephan Aßmus			status_t			SetFlags(uint32);
24889208c77SStephan Aßmus			uint32				Flags() const;
249b30e9021SStephan Aßmus
25089208c77SStephan Aßmus			bool				IsModal() const;
25189208c77SStephan Aßmus			bool				IsFloating() const;
252b30e9021SStephan Aßmus
25389208c77SStephan Aßmus			status_t			SetWindowAlignment(window_alignment mode,
25489208c77SStephan Aßmus									int32 h, int32 hOffset = 0,
25589208c77SStephan Aßmus									int32 width = 0, int32 widthOffset = 0,
25689208c77SStephan Aßmus									int32 v = 0, int32 vOffset = 0,
25789208c77SStephan Aßmus									int32 height = 0, int32 heightOffset = 0);
25889208c77SStephan Aßmus			status_t			GetWindowAlignment(
25989208c77SStephan Aßmus									window_alignment* mode = NULL,
26089208c77SStephan Aßmus									int32* h = NULL, int32* hOffset = NULL,
26189208c77SStephan Aßmus									int32* width = NULL,
26289208c77SStephan Aßmus									int32* widthOffset = NULL,
26389208c77SStephan Aßmus									int32* v = NULL, int32* vOffset = NULL,
26489208c77SStephan Aßmus									int32* height = NULL,
26589208c77SStephan Aßmus									int32* heightOffset = NULL) const;
26689208c77SStephan Aßmus
26789208c77SStephan Aßmus	virtual	bool				QuitRequested();
26889208c77SStephan Aßmus	virtual thread_id			Run();
269b30e9021SStephan Aßmus
27089208c77SStephan Aßmus	virtual	void				SetLayout(BLayout* layout);
27189208c77SStephan Aßmus			BLayout*			GetLayout() const;
272b30e9021SStephan Aßmus
27389208c77SStephan Aßmus			void				InvalidateLayout(bool descendants = false);
27448ae3e38SAxel Dörfler			void				Layout(bool force);
2757f9368caSlooncraz			bool				IsOffscreenWindow() const;
27689208c77SStephan Aßmusprivate:
27789208c77SStephan Aßmus	// FBC padding and forbidden methods
27889208c77SStephan Aßmus	virtual	void				_ReservedWindow2();
27989208c77SStephan Aßmus	virtual	void				_ReservedWindow3();
28089208c77SStephan Aßmus	virtual	void				_ReservedWindow4();
28189208c77SStephan Aßmus	virtual	void				_ReservedWindow5();
28289208c77SStephan Aßmus	virtual	void				_ReservedWindow6();
28389208c77SStephan Aßmus	virtual	void				_ReservedWindow7();
28489208c77SStephan Aßmus	virtual	void				_ReservedWindow8();
28589208c77SStephan Aßmus
28689208c77SStephan Aßmus								BWindow();
28789208c77SStephan Aßmus								BWindow(BWindow&);
28889208c77SStephan Aßmus			BWindow&			operator=(BWindow&);
2899ecf9d1cSIngo Weinhold
290b95458fdSAdi Oancaprivate:
291e17b33e5SAxel Dörfler	typedef BLooper inherited;
2926450b76dSAxel Dörfler	struct unpack_cookie;
293292d5cedSAxel Dörfler	class Shortcut;
294e17b33e5SAxel Dörfler
2956723d9fcSJohn Scipione	friend class BAlert;
296e17b33e5SAxel Dörfler	friend class BApplication;
297e17b33e5SAxel Dörfler	friend class BBitmap;
298e17b33e5SAxel Dörfler	friend class BView;
299e17b33e5SAxel Dörfler	friend class BMenuItem;
300e17b33e5SAxel Dörfler	friend class BWindowScreen;
301e17b33e5SAxel Dörfler	friend class BDirectWindow;
302e17b33e5SAxel Dörfler	friend class BFilePanel;
3035836cd75SClemens Zeidler	friend class BWindowStack;
304a02979bbSKarsten Heimrich
305e17b33e5SAxel Dörfler	friend void _set_menu_sem_(BWindow* w, sem_id sem);
306b30e9021SStephan Aßmus	friend status_t _safe_get_server_token_(const BLooper*, int32*);
307b30e9021SStephan Aßmus
30889208c77SStephan Aßmus								BWindow(BRect frame, int32 bitmapToken);
30989208c77SStephan Aßmus			void				_InitData(BRect frame, const char* title,
31089208c77SStephan Aßmus									window_look look, window_feel feel,
31189208c77SStephan Aßmus									uint32 flags, uint32 workspace,
31289208c77SStephan Aßmus									int32 bitmapToken = -1);
31389208c77SStephan Aßmus
31489208c77SStephan Aßmus	virtual	void				task_looper();
31589208c77SStephan Aßmus
3166723d9fcSJohn Scipione			BPoint				AlertPosition(const BRect& frame);
31789208c77SStephan Aßmus	virtual BMessage*			ConvertToMessage(void* raw, int32 code);
31889208c77SStephan Aßmus
31989208c77SStephan Aßmus			void				AddShortcut(uint32 key, uint32 modifiers,
32089208c77SStephan Aßmus									BMenuItem* item);
32189208c77SStephan Aßmus			BHandler*			_DetermineTarget(BMessage* message,
32289208c77SStephan Aßmus									BHandler* target);
32389208c77SStephan Aßmus			bool				_IsFocusMessage(BMessage* message);
32489208c77SStephan Aßmus			bool				_UnpackMessage(unpack_cookie& state,
32589208c77SStephan Aßmus									BMessage** _message, BHandler** _target,
32689208c77SStephan Aßmus									bool* _usePreferred);
32789208c77SStephan Aßmus			void				_SanitizeMessage(BMessage* message,
32889208c77SStephan Aßmus									BHandler* target, bool usePreferred);
32989208c77SStephan Aßmus			bool				_StealMouseMessage(BMessage* message,
33089208c77SStephan Aßmus									bool& deleteMessage);
33189208c77SStephan Aßmus			uint32				_TransitForMouseMoved(BView* view,
33289208c77SStephan Aßmus									BView* viewUnderMouse) const;
33389208c77SStephan Aßmus
33489208c77SStephan Aßmus			bool				InUpdate();
33589208c77SStephan Aßmus			void				_DequeueAll();
33689208c77SStephan Aßmus			window_type			_ComposeType(window_look look,
33789208c77SStephan Aßmus									window_feel feel) const;
33889208c77SStephan Aßmus			void				_DecomposeType(window_type type,
33989208c77SStephan Aßmus									window_look* look,
34089208c77SStephan Aßmus									window_feel* feel) const;
34189208c77SStephan Aßmus
34289208c77SStephan Aßmus			void				SetIsFilePanel(bool yes);
34389208c77SStephan Aßmus			bool				IsFilePanel() const;
34489208c77SStephan Aßmus
34589208c77SStephan Aßmus			void				_CreateTopView();
34689208c77SStephan Aßmus			void				_AdoptResize();
34789208c77SStephan Aßmus			void				_SetFocus(BView* focusView,
34889208c77SStephan Aßmus									bool notifyIputServer = false);
34989208c77SStephan Aßmus			void				_SetName(const char* title);
35089208c77SStephan Aßmus
35189208c77SStephan Aßmus			Shortcut*			_FindShortcut(uint32 key, uint32 modifiers);
35289208c77SStephan Aßmus			BView*				_FindView(BView* view, BPoint point) const;
35389208c77SStephan Aßmus			BView*				_FindView(int32 token);
35489208c77SStephan Aßmus			BView*				_LastViewChild(BView* parent);
35589208c77SStephan Aßmus
35689208c77SStephan Aßmus			BView*				_FindNextNavigable(BView* focus, uint32 flags);
35789208c77SStephan Aßmus			BView*				_FindPreviousNavigable(BView* focus,
35889208c77SStephan Aßmus									uint32 flags);
35989208c77SStephan Aßmus			void				_Switcher(int32 rawKey, uint32 modifiers,
36089208c77SStephan Aßmus									bool repeat);
36189208c77SStephan Aßmus			bool				_HandleKeyDown(BMessage* event);
36289208c77SStephan Aßmus			bool				_HandleUnmappedKeyDown(BMessage* event);
36389208c77SStephan Aßmus			void				_KeyboardNavigation();
36489208c77SStephan Aßmus
36589208c77SStephan Aßmus			void				_GetDecoratorSize(float* _borderWidth,
36689208c77SStephan Aßmus									float* _tabHeight) const;
36759347b7fSRyan Leavengood			void				_SendShowOrHideMessage();
36889208c77SStephan Aßmus
369e17b33e5SAxel Dörflerprivate:
37089208c77SStephan Aßmus			char*				fTitle;
37189208c77SStephan Aßmus			int32				_unused0;
37289208c77SStephan Aßmus			bool				fInTransaction;
37389208c77SStephan Aßmus			bool				fActive;
37489208c77SStephan Aßmus			short				fShowLevel;
37589208c77SStephan Aßmus			uint32				fFlags;
37689208c77SStephan Aßmus
37789208c77SStephan Aßmus			BView*				fTopView;
37889208c77SStephan Aßmus			BView*				fFocus;
37989208c77SStephan Aßmus			BView*				fLastMouseMovedView;
380057c8708SJulian Harnath			uint32				_unused1;
38189208c77SStephan Aßmus			BMenuBar*			fKeyMenuBar;
38289208c77SStephan Aßmus			BButton*			fDefaultButton;
38389208c77SStephan Aßmus			BList				fShortcuts;
38489208c77SStephan Aßmus			int32				fTopViewToken;
38589208c77SStephan Aßmus			bool				fUpdateRequested;
38689208c77SStephan Aßmus			bool				fOffscreen;
38789208c77SStephan Aßmus			bool				fIsFilePanel;
38889208c77SStephan Aßmus			bool				_unused4;
38989208c77SStephan Aßmus			bigtime_t			fPulseRate;
39089208c77SStephan Aßmus			bool				_unused5;
39189208c77SStephan Aßmus			bool				fMinimized;
39289208c77SStephan Aßmus			bool				fNoQuitShortcut;
39389208c77SStephan Aßmus			bool				_unused6;
39489208c77SStephan Aßmus			sem_id				fMenuSem;
39589208c77SStephan Aßmus			float				fMaxZoomHeight;
39689208c77SStephan Aßmus			float				fMaxZoomWidth;
39789208c77SStephan Aßmus			float				fMinHeight;
39889208c77SStephan Aßmus			float				fMinWidth;
39989208c77SStephan Aßmus			float				fMaxHeight;
40089208c77SStephan Aßmus			float				fMaxWidth;
40189208c77SStephan Aßmus			BRect				fFrame;
40289208c77SStephan Aßmus			window_look			fLook;
40389208c77SStephan Aßmus			window_feel			fFeel;
40489208c77SStephan Aßmus			int32				fLastViewToken;
40594dc74b0SIngo Weinhold			::BPrivate::PortLink* fLink;
40689208c77SStephan Aßmus			BMessageRunner*		fPulseRunner;
40789208c77SStephan Aßmus			BRect				fPreviousFrame;
408a02979bbSKarsten Heimrich
40989208c77SStephan Aßmus			uint32				_reserved[9];
410b95458fdSAdi Oanca};
411b95458fdSAdi Oanca
41248ae3e38SAxel Dörfler
41389208c77SStephan Aßmus#endif // _WINDOW_H
414