// InsertChild for wxFrame
//-----------------------------------------------------------------------------
+#if wxUSE_TOOLBAR
+
/* Callback for wxFrame. This very strange beast has to be used because
* C++ has no virtual methods in a constructor. We have to emulate a
* virtual function here as wxWidgets requires different ways to insert
parent);
}
}
-#endif // wxUSE_TOOLBAR
+#endif // wxUSE_TOOLBAR_NATIVE
}
+#endif // wxUSE_TOOLBAR
+
// ----------------------------------------------------------------------------
// wxFrame creation
// ----------------------------------------------------------------------------
m_menuBarDetached = false;
m_toolBarDetached = false;
m_menuBarHeight = 2;
+ m_fsSaveFlag = 0;
}
bool wxFrame::Create( wxWindow *parent,
{
#if wxUSE_MENUS_NATIVE
// menu bar
- if (m_frameMenuBar &&
- GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget) && !m_menuBarDetached)
+ if (HasVisibleMenubar() && !m_menuBarDetached)
{
*height -= m_menuBarHeight;
}
*height = 0;
}
+bool wxFrame::ShowFullScreen(bool show, long style)
+{
+ if (!wxFrameBase::ShowFullScreen(show, style))
+ return false;
+
+ wxWindow* const bar[] = {
+#if wxUSE_MENUS
+ m_frameMenuBar,
+#else
+ NULL,
+#endif
+#if wxUSE_TOOLBAR
+ m_frameToolBar,
+#else
+ NULL,
+#endif
+#if wxUSE_STATUSBAR
+ m_frameStatusBar,
+#else
+ NULL,
+#endif
+ };
+ const long fsNoBar[] = {
+ wxFULLSCREEN_NOMENUBAR, wxFULLSCREEN_NOTOOLBAR, wxFULLSCREEN_NOSTATUSBAR
+ };
+ for (int i = 0; i < 3; i++)
+ {
+ if (show)
+ {
+ if (bar[i] && (style & fsNoBar[i]))
+ {
+ if (bar[i]->IsShown())
+ bar[i]->Show(false);
+ else
+ style &= ~fsNoBar[i];
+ }
+ }
+ else
+ {
+ if (bar[i] && (m_fsSaveFlag & fsNoBar[i]))
+ bar[i]->Show(true);
+ }
+ }
+ if (show)
+ m_fsSaveFlag = style;
+
+ return true;
+}
+
void wxFrame::GtkOnSize()
{
// avoid recursions
ConstrainSize();
+ int width, height;
+ GTKDoGetSize(&width, &height);
+
if (m_mainWidget)
{
// TODO
// area, which is represented by m_wxwindow.
#if wxUSE_MENUS_NATIVE
- if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0))
+ int menubarHeight = 0;
+#endif
+
+#if wxUSE_MENUS_NATIVE
+ if (HasVisibleMenubar())
{
- if (!GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget))
- gtk_widget_show( m_frameMenuBar->m_widget );
int xx = m_miniEdge;
int yy = m_miniEdge + m_miniTitle;
- int ww = m_width - 2*m_miniEdge;
+ int ww = width - 2*m_miniEdge;
if (ww < 0)
ww = 0;
- int hh = m_menuBarHeight;
- if (m_menuBarDetached) hh = wxPLACE_HOLDER;
+ menubarHeight = m_menuBarHeight;
+ if (m_menuBarDetached) menubarHeight = wxPLACE_HOLDER;
m_frameMenuBar->m_x = xx;
m_frameMenuBar->m_y = yy;
m_frameMenuBar->m_width = ww;
- m_frameMenuBar->m_height = hh;
+ m_frameMenuBar->m_height = menubarHeight;
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
m_frameMenuBar->m_widget,
- xx, yy, ww, hh );
- client_area_y_offset += hh;
- }
- else
- {
- if (m_frameMenuBar)
- {
- if (GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget))
- gtk_widget_hide( m_frameMenuBar->m_widget );
- }
+ xx, yy, ww, menubarHeight);
+ client_area_y_offset += menubarHeight;
}
#endif // wxUSE_MENUS_NATIVE
(m_frameToolBar->m_widget->parent == m_mainWidget))
{
int xx = m_miniEdge;
- int yy = m_miniEdge + m_miniTitle;
+ int yy = m_miniEdge + m_miniTitle
#if wxUSE_MENUS_NATIVE
- if (m_frameMenuBar)
- {
- if (!m_menuBarDetached)
- yy += m_menuBarHeight;
- else
- yy += wxPLACE_HOLDER;
- }
-#endif // wxUSE_MENUS_NATIVE
+ + menubarHeight
+#endif
+ ;
m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy;
{
ww = m_toolBarDetached ? wxPLACE_HOLDER
: m_frameToolBar->m_width;
- hh = m_height - 2*m_miniEdge;
+ hh = height - 2*m_miniEdge;
client_area_x_offset += ww;
}
ww = m_toolBarDetached ? wxPLACE_HOLDER
: m_frameToolBar->m_width;
xx = GetClientSize().x - 1;
- hh = m_height - 2*m_miniEdge;
+ hh = height - 2*m_miniEdge;
if( hh < 0 )
hh = 0;
yy = GetClientSize().y;
#if wxUSE_MENUS_NATIVE
yy += m_menuBarHeight;
-#endif // wxUSE_MENU_NATIVE
+#endif // wxUSE_MENUS_NATIVE
m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy;
- ww = m_width - 2*m_miniEdge;
+ ww = width - 2*m_miniEdge;
hh = m_toolBarDetached ? wxPLACE_HOLDER
: m_frameToolBar->m_height;
}
else
{
- ww = m_width - 2*m_miniEdge;
+ ww = width - 2*m_miniEdge;
hh = m_toolBarDetached ? wxPLACE_HOLDER
: m_frameToolBar->m_height;
int client_x = client_area_x_offset + m_miniEdge;
int client_y = client_area_y_offset + m_miniEdge + m_miniTitle;
- int client_w = m_width - client_area_x_offset - 2*m_miniEdge;
- int client_h = m_height - client_area_y_offset- 2*m_miniEdge - m_miniTitle;
+ int client_w = width - client_area_x_offset - 2*m_miniEdge;
+ int client_h = height - client_area_y_offset- 2*m_miniEdge - m_miniTitle;
if (client_w < 0)
client_w = 0;
if (client_h < 0)
}
#if wxUSE_STATUSBAR
- if (m_frameStatusBar && m_frameStatusBar->IsShown() &&
- !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0))
+ if (m_frameStatusBar && m_frameStatusBar->IsShown())
{
- if (!GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget))
- gtk_widget_show( m_frameStatusBar->m_widget );
-
int xx = 0 + m_miniEdge;
- int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge - client_area_y_offset;
- int ww = m_width - 2*m_miniEdge;
+ int yy = height - wxSTATUS_HEIGHT - m_miniEdge - client_area_y_offset;
+ int ww = width - 2*m_miniEdge;
if (ww < 0)
ww = 0;
int hh = wxSTATUS_HEIGHT;
m_frameStatusBar->m_widget,
xx, yy, ww, hh );
}
- else
- {
- if (m_frameStatusBar)
- {
- if (GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget))
- gtk_widget_hide( m_frameStatusBar->m_widget );
- }
- }
#endif // wxUSE_STATUSBAR
m_sizeSet = true;
GtkUpdateSize();
}
+bool wxFrame::HasVisibleMenubar() const
+{
+ return m_frameMenuBar && m_frameMenuBar->IsShown();
+}
#endif // wxUSE_MENUS_NATIVE
#if wxUSE_TOOLBAR