fix MDI child sizing, which was working more or less by accident before I broke it in rev 46223
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47360 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
f24fc8367d
commit
1d66b09982
@ -58,7 +58,7 @@ public:
|
||||
long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
|
||||
wxWindowID id = 0,
|
||||
const wxString& name = wxStatusLineNameStr);
|
||||
|
||||
|
||||
void SetStatusBar(wxStatusBar *statbar);
|
||||
#endif // wxUSE_STATUSBAR
|
||||
|
||||
@ -68,7 +68,7 @@ public:
|
||||
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); }
|
||||
|
||||
@ -95,14 +95,15 @@ protected:
|
||||
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:
|
||||
|
@ -63,6 +63,7 @@ public:
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
virtual bool HasVisibleMenubar() const;
|
||||
|
||||
private:
|
||||
friend class wxMDIChildFrame;
|
||||
|
@ -202,8 +202,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
|
||||
{
|
||||
#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;
|
||||
}
|
||||
@ -319,24 +318,25 @@ void wxFrame::GtkOnSize()
|
||||
// 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
|
||||
|
||||
@ -345,16 +345,7 @@ void wxFrame::GtkOnSize()
|
||||
(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;
|
||||
@ -589,6 +580,10 @@ void wxFrame::UpdateMenuBarSize()
|
||||
GtkUpdateSize();
|
||||
}
|
||||
|
||||
bool wxFrame::HasVisibleMenubar() const
|
||||
{
|
||||
return m_frameMenuBar && m_frameMenuBar->IsShown();
|
||||
}
|
||||
#endif // wxUSE_MENUS_NATIVE
|
||||
|
||||
#if wxUSE_TOOLBAR
|
||||
|
@ -292,6 +292,18 @@ void wxMDIParentFrame::ActivatePrevious()
|
||||
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
|
||||
//-----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user