]> git.saurik.com Git - wxWidgets.git/blob - include/wx/dfb/toplevel.h
aui docking works well on systems with solid window dragging turned off
[wxWidgets.git] / include / wx / dfb / toplevel.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/dfb/toplevel.h
3 // Purpose: Top level window, abstraction of wxFrame and wxDialog
4 // Author: Vaclav Slavik
5 // Created: 2006-08-10
6 // RCS-ID: $Id$
7 // Copyright: (c) 2006 REA Elektronik GmbH
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_DFB_TOPLEVEL_H_
12 #define _WX_DFB_TOPLEVEL_H_
13
14 #include "wx/dfb/dfbptr.h"
15
16 wxDFB_DECLARE_INTERFACE(IDirectFBWindow);
17
18 class wxDfbQueuedPaintRequests;
19 struct wxDFBWindowEvent;
20
21 //-----------------------------------------------------------------------------
22 // wxTopLevelWindowDFB
23 //-----------------------------------------------------------------------------
24
25 class WXDLLIMPEXP_CORE wxTopLevelWindowDFB : public wxTopLevelWindowBase
26 {
27 public:
28 // construction
29 wxTopLevelWindowDFB() { Init(); }
30 wxTopLevelWindowDFB(wxWindow *parent,
31 wxWindowID id,
32 const wxString& title,
33 const wxPoint& pos = wxDefaultPosition,
34 const wxSize& size = wxDefaultSize,
35 long style = wxDEFAULT_FRAME_STYLE,
36 const wxString& name = wxFrameNameStr)
37 {
38 Init();
39
40 Create(parent, id, title, pos, size, style, name);
41 }
42
43 bool Create(wxWindow *parent,
44 wxWindowID id,
45 const wxString& title,
46 const wxPoint& pos = wxDefaultPosition,
47 const wxSize& size = wxDefaultSize,
48 long style = wxDEFAULT_FRAME_STYLE,
49 const wxString& name = wxFrameNameStr);
50
51 virtual ~wxTopLevelWindowDFB();
52
53 // implement base class pure virtuals
54 virtual void Maximize(bool maximize = true);
55 virtual bool IsMaximized() const;
56 virtual void Iconize(bool iconize = true);
57 virtual bool IsIconized() const;
58 virtual void Restore();
59
60 virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
61 virtual bool IsFullScreen() const { return m_fsIsShowing; }
62
63 virtual bool Show(bool show = true);
64
65 virtual bool CanSetTransparent() { return true; }
66 virtual bool SetTransparent(wxByte alpha);
67
68 virtual void SetTitle(const wxString &title) { m_title = title; }
69 virtual wxString GetTitle() const { return m_title; }
70
71 virtual void Update();
72
73 // implementation from now on
74 // --------------------------
75
76 void OnInternalIdle();
77
78 wxIDirectFBWindowPtr GetDirectFBWindow() const { return m_dfbwin; }
79
80 // Returns true if some invalidated area of the TLW is currently being
81 // painted
82 bool IsPainting() const { return m_isPainting; }
83
84 protected:
85 // common part of all ctors
86 void Init();
87
88 virtual wxIDirectFBSurfacePtr ObtainDfbSurface() const;
89
90 // overriden wxWindow methods
91 virtual void DoGetPosition(int *x, int *y) const;
92 virtual void DoGetSize(int *width, int *height) const;
93 virtual void DoMoveWindow(int x, int y, int width, int height);
94
95 virtual void DoRefreshRect(const wxRect& rect);
96
97 // sets DirectFB keyboard focus to this toplevel window (note that DFB
98 // focus is different from wx: only shown TLWs can have it and not any
99 // wxWindows as in wx
100 void SetDfbFocus();
101
102 private:
103 // do queued painting in idle time
104 void HandleQueuedPaintRequests();
105
106 // DirectFB events handling
107 static void HandleDFBWindowEvent(const wxDFBWindowEvent& event_);
108
109 protected:
110 wxString m_title;
111
112 bool m_fsIsShowing:1; /* full screen */
113 long m_fsSaveStyle;
114 long m_fsSaveFlag;
115 wxRect m_fsSaveFrame;
116
117 // is the frame currently maximized?
118 bool m_isMaximized:1;
119 wxRect m_savedFrame;
120
121 // did we sent wxSizeEvent at least once?
122 bool m_sizeSet:1;
123
124 // window's opacity (0: transparent, 255: opaque)
125 wxByte m_opacity;
126
127 // interface to the underlying DirectFB window
128 wxIDirectFBWindowPtr m_dfbwin;
129
130 private:
131 // invalidated areas of the TLW that need repainting
132 wxDfbQueuedPaintRequests *m_toPaint;
133 // are we currently painting some area of this TLW?
134 bool m_isPainting;
135
136 friend class wxEventLoop; // for HandleDFBWindowEvent
137 friend class wxWindowDFB; // for SetDfbFocus
138 };
139
140 #endif // _WX_DFB_TOPLEVEL_H_