]>
git.saurik.com Git - wxWidgets.git/blob - src/dfb/toplevel.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/dfb/toplevel.cpp
3 // Purpose: Top level window, abstraction of wxFrame and wxDialog
4 // Author: Vaclav Slavik
7 // Copyright: (c) 2006 REA Elektronik GmbH
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 // For compilers that support precompilation, includes "wx.h".
12 #include "wx/wxprec.h"
14 #include "wx/toplevel.h"
20 #include "wx/dfb/private.h"
22 #define TRACE_EVENTS "events"
24 // ============================================================================
25 // wxTopLevelWindowDFB
26 // ============================================================================
28 // ----------------------------------------------------------------------------
29 // creation & destruction
30 // ----------------------------------------------------------------------------
32 void wxTopLevelWindowDFB::Init()
34 m_isMaximized
= false;
35 m_fsIsShowing
= false;
38 bool wxTopLevelWindowDFB::Create(wxWindow
*parent
,
40 const wxString
& title
,
41 const wxPoint
& posOrig
,
42 const wxSize
& sizeOrig
,
46 // always create a frame of some reasonable, even if arbitrary, size (at
47 // least for MSW compatibility)
48 wxSize
size(sizeOrig
);
49 if ( size
.x
== wxDefaultCoord
|| size
.y
== wxDefaultCoord
)
51 wxSize sizeDefault
= GetDefaultSize();
52 if ( size
.x
== wxDefaultCoord
)
53 size
.x
= sizeDefault
.x
;
54 if ( size
.y
== wxDefaultCoord
)
55 size
.y
= sizeDefault
.y
;
59 if ( pos
.x
== wxDefaultCoord
)
61 if ( pos
.y
== wxDefaultCoord
)
64 if ( !wxNonOwnedWindow::Create(parent
, id
, pos
, size
, style
, name
) )
67 wxTopLevelWindows
.Append(this);
73 // ----------------------------------------------------------------------------
75 // ----------------------------------------------------------------------------
77 bool wxTopLevelWindowDFB::ShowFullScreen(bool show
, long style
)
79 if ( show
== m_fsIsShowing
)
86 m_fsSaveStyle
= m_windowStyle
;
88 GetPosition(&m_fsSaveFrame
.x
, &m_fsSaveFrame
.y
);
89 GetSize(&m_fsSaveFrame
.width
, &m_fsSaveFrame
.height
);
91 if ( style
& wxFULLSCREEN_NOCAPTION
)
92 m_windowStyle
&= ~wxCAPTION
;
93 if ( style
& wxFULLSCREEN_NOBORDER
)
94 m_windowStyle
= wxSIMPLE_BORDER
;
97 wxDisplaySize(&x
, &y
);
102 m_windowStyle
= m_fsSaveStyle
;
103 SetSize(m_fsSaveFrame
.x
, m_fsSaveFrame
.y
,
104 m_fsSaveFrame
.width
, m_fsSaveFrame
.height
);
110 bool wxTopLevelWindowDFB::SetTransparent(wxByte alpha
)
114 if ( !m_dfbwin
->SetOpacity(alpha
) )
122 // ----------------------------------------------------------------------------
123 // maximize, minimize etc.
124 // ----------------------------------------------------------------------------
126 void wxTopLevelWindowDFB::Maximize(bool maximize
)
129 wxClientDisplayRect(&x
, &y
, &w
, &h
);
131 if ( maximize
&& !m_isMaximized
)
133 m_isMaximized
= true;
135 GetPosition(&m_savedFrame
.x
, &m_savedFrame
.y
);
136 GetSize(&m_savedFrame
.width
, &m_savedFrame
.height
);
140 else if ( !maximize
&& m_isMaximized
)
142 m_isMaximized
= false;
143 SetSize(m_savedFrame
.x
, m_savedFrame
.y
,
144 m_savedFrame
.width
, m_savedFrame
.height
);
148 bool wxTopLevelWindowDFB::IsMaximized() const
150 return m_isMaximized
;
153 void wxTopLevelWindowDFB::Restore()
161 void wxTopLevelWindowDFB::Iconize(bool WXUNUSED(iconize
))
163 wxFAIL_MSG(wxT("Iconize not supported under wxDFB"));
166 bool wxTopLevelWindowDFB::IsIconized() const
171 // ----------------------------------------------------------------------------
173 // ----------------------------------------------------------------------------
175 void wxTopLevelWindowDFB::HandleFocusEvent(const wxDFBWindowEvent
& event_
)
177 const DFBWindowEvent
& dfbevent
= event_
;
178 const bool activate
= (dfbevent
.type
== DWET_GOTFOCUS
);
180 wxLogTrace(TRACE_EVENTS
,
181 "toplevel window %p ('%s') %s focus",
183 activate
? "got" : "lost");
185 wxActivateEvent
event(wxEVT_ACTIVATE
, activate
, GetId());
186 event
.SetEventObject(this);
187 HandleWindowEvent(event
);
189 // if a frame that doesn't have wx focus inside it just got focus, we
190 // need to set focus to it (or its child):
193 wxWindow
*focused
= wxWindow::FindFocus();
194 if ( !focused
|| focused
->GetTLW() != this )
196 wxLogTrace(TRACE_EVENTS
,
197 "setting wx focus to toplevel window %p ('%s')",
200 if ( CanAcceptFocus() )
203 wxLogTrace(TRACE_EVENTS
, "...which doesn't accept it");