long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
wxWindowID id = 0,
const wxString& name = wxStatusLineNameStr);
-
+
void SetStatusBar(wxStatusBar *statbar);
#endif // wxUSE_STATUSBAR
const wxString& name = wxToolBarNameStr);
void SetToolBar(wxToolBar *toolbar);
#endif // wxUSE_TOOLBAR
-
+
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
wxPoint GetClientAreaOrigin() const { return wxPoint(0, 0); }
virtual void DoGetClientSize( int *width, int *height ) const;
#if wxUSE_MENUS_NATIVE
-
virtual void DetachMenuBar();
virtual void AttachMenuBar(wxMenuBar *menubar);
+ // Whether frame has a menubar showing
+ // (needed to deal with perverted MDI menubar handling)
+ virtual bool HasVisibleMenubar() const;
public:
// Menu size is dynamic now, call this whenever it might change.
void UpdateMenuBarSize();
-
#endif // wxUSE_MENUS_NATIVE
private:
{
#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;
}
// m_mainWidget holds the menubar, the toolbar and the client
// area, which is represented by m_wxwindow.
+ int menubarHeight = 0;
#if wxUSE_MENUS_NATIVE
- if (m_frameMenuBar && m_frameMenuBar->IsShown())
+ if (HasVisibleMenubar())
{
int xx = m_miniEdge;
int yy = m_miniEdge + m_miniTitle;
int ww = m_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;
+ 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;
-#if wxUSE_MENUS_NATIVE
- if (m_frameMenuBar)
- {
- if (!m_menuBarDetached)
- yy += m_menuBarHeight;
- else
- yy += wxPLACE_HOLDER;
- }
-#endif // wxUSE_MENUS_NATIVE
+ int yy = m_miniEdge + m_miniTitle + menubarHeight;
m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy;
GtkUpdateSize();
}
+bool wxFrame::HasVisibleMenubar() const
+{
+ return m_frameMenuBar && m_frameMenuBar->IsShown();
+}
#endif // wxUSE_MENUS_NATIVE
#if wxUSE_TOOLBAR
gtk_notebook_prev_page( GTK_NOTEBOOK(m_clientWindow->m_widget) );
}
+bool wxMDIParentFrame::HasVisibleMenubar() const
+{
+ if (wxFrame::HasVisibleMenubar())
+ return true;
+
+ wxMDIChildFrame* active_child_frame = GetActiveChild();
+ wxMenuBar* menubar = NULL;
+ if (active_child_frame)
+ menubar = active_child_frame->m_menuBar;
+ return menubar && menubar->IsShown();
+}
+
//-----------------------------------------------------------------------------
// wxMDIChildFrame
//-----------------------------------------------------------------------------