child->m_width,
child->m_height );
-#if wxUSE_TOOLBAR
+#if wxUSE_TOOLBAR_NATIVE
/* we connect to these events for recalculating the client area
space when the toolbar is floating */
if (wxIS_KIND_OF(child,wxToolBar))
if (wxTheApp->GetTopWindow() == this)
wxTheApp->SetTopWindow( (wxWindow*) NULL );
- if (wxTopLevelWindows.Number() == 0)
+ if ((wxTopLevelWindows.Number() == 0) &&
+ (wxTheApp->GetExitOnFrameDelete()))
+ {
wxTheApp->ExitMainLoop();
+ }
}
// ----------------------------------------------------------------------------
return wxWindow::Show( show );
}
+void wxFrame::DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(width), int WXUNUSED(height) )
+{
+ wxFAIL_MSG( wxT("DoMoveWindow called for wxFrame") );
+}
+
void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
#if wxUSE_STATUSBAR
/* status bar */
if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
-#endif
+#endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR
/* tool bar */
if (m_frameToolBar)
{
- if (!m_toolBarDetached)
+ if (m_toolBarDetached)
{
- int y = 0;
- m_frameToolBar->GetSize( (int *) NULL, &y );
- (*height) -= y;
+ *height -= wxPLACE_HOLDER;
}
else
- (*height) -= wxPLACE_HOLDER;
+ {
+ int x, y;
+ m_frameToolBar->GetSize( &x, &y );
+ if ( m_frameToolBar->GetWindowStyle() & wxTB_VERTICAL )
+ {
+ *width -= x;
+ }
+ else
+ {
+ *height -= y;
+ }
+ }
}
-#endif
+#endif // wxUSE_TOOLBAR
/* mini edge */
- (*height) -= m_miniEdge*2 + m_miniTitle;
+ *height -= m_miniEdge*2 + m_miniTitle;
}
if (width)
{
- (*width) -= m_miniEdge*2;
+ *width -= m_miniEdge*2;
}
}
/* tool bar */
if (m_frameToolBar)
{
- if (!m_toolBarDetached)
+ if (m_toolBarDetached)
{
- int y = 0;
- m_frameToolBar->GetSize( (int *) NULL, &y );
- height += y;
+ height += wxPLACE_HOLDER;
}
else
- height += wxPLACE_HOLDER;
+ {
+ int x, y;
+ m_frameToolBar->GetSize( &x, &y );
+ if ( m_frameToolBar->GetWindowStyle() & wxTB_VERTICAL )
+ {
+ width += x;
+ }
+ else
+ {
+ height += y;
+ }
+ }
}
#endif
m_height = height;
/* space occupied by m_frameToolBar and m_frameMenuBar */
- int client_area_y_offset = 0;
+ int client_area_x_offset = 0,
+ client_area_y_offset = 0;
/* wxMDIChildFrame derives from wxFrame but it _is_ a wxWindow as it uses
wxWindow::Create to create it's GTK equivalent. m_mainWidget is only
else
yy += wxPLACE_HOLDER;
}
- int ww = m_width - 2*m_miniEdge;
- int hh = m_frameToolBar->m_height;
- if (m_toolBarDetached) hh = wxPLACE_HOLDER;
+
m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy;
- /* m_frameToolBar->m_height = hh; don't change the toolbar's reported size
- m_frameToolBar->m_width = ww; */
+
+ /* don't change the toolbar's reported height/width */
+ int ww, hh;
+ if ( m_frameToolBar->GetWindowStyle() & wxTB_VERTICAL )
+ {
+ ww = m_toolBarDetached ? wxPLACE_HOLDER
+ : m_frameToolBar->m_width;
+ hh = m_height - 2*m_miniEdge;
+
+ client_area_x_offset += ww;
+ }
+ else
+ {
+ ww = m_width - 2*m_miniEdge;
+ hh = m_toolBarDetached ? wxPLACE_HOLDER
+ : m_frameToolBar->m_height;
+
+ client_area_y_offset += hh;
+ }
+
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
m_frameToolBar->m_widget,
xx, yy, ww, hh );
- client_area_y_offset += hh;
}
-#endif
+#endif // wxUSE_TOOLBAR
- int client_x = m_miniEdge;
+ 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 - 2*m_miniEdge;
+ 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;
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
m_wxwindow,