#endif // wxUSE_TOOLBAR
}
+// ----------------------------------------------------------------------------
+// wxFrame size management: we exclude the areas taken by menu/status/toolbars
+// from the client area, so the client area is what's really available for the
+// frame contents
+// ----------------------------------------------------------------------------
+
+// get the origin of the client area in the client coordinates
+wxPoint wxFrameBase::GetClientAreaOrigin() const
+{
+ wxPoint pt(0, 0);
+
+#if wxUSE_TOOLBAR
+ if ( GetToolBar() && GetToolBar()->IsShown() )
+ {
+ int w, h;
+ GetToolBar()->GetSize(& w, & h);
+
+ if ( GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL )
+ {
+ pt.x += w;
+ }
+ else
+ {
+ pt.y += h;
+ }
+ }
+#endif // wxUSE_TOOLBAR
+
+ return pt;
+}
+
+void wxFrameBase::DoScreenToClient(int *x, int *y) const
+{
+ wxWindow::DoScreenToClient(x, y);
+
+ // We may be faking the client origin.
+ // So a window that's really at (0, 30) may appear
+ // (to wxWin apps) to be at (0, 0).
+ wxPoint pt(GetClientAreaOrigin());
+ *x -= pt.x;
+ *y -= pt.y;
+}
+
+void wxFrameBase::DoClientToScreen(int *x, int *y) const
+{
+ // We may be faking the client origin.
+ // So a window that's really at (0, 30) may appear
+ // (to wxWin apps) to be at (0, 0).
+ wxPoint pt1(GetClientAreaOrigin());
+ *x += pt1.x;
+ *y += pt1.y;
+
+ wxWindow::DoClientToScreen(x, y);
+}
+
// ----------------------------------------------------------------------------
// misc
// ----------------------------------------------------------------------------
// default resizing behaviour - if only ONE subwindow, resize to fill the
// whole client area
-void wxFrameBase::OnSize(wxSizeEvent& event)
+void wxFrameBase::OnSize(wxSizeEvent& WXUNUSED(event))
{
// if we're using constraints - do use them
#if wxUSE_CONSTRAINTS
// for whatever reasons, wxGTK wants to have a small offset - it
// probably looks better with it?
#ifdef __WXGTK__
- static const int ofs = 0;
-#else
static const int ofs = 1;
+#else
+ static const int ofs = 0;
#endif
child->SetSize(ofs, ofs, clientW - 2*ofs, clientH - 2*ofs);
}
// The default implementation for the close window event.
-void wxFrameBase::OnCloseWindow(wxCloseEvent& event)
+void wxFrameBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
Destroy();
}
wxWindowID id,
const wxString& name)
{
- wxStatusBar *statusBar = new wxStatusBar(this, id,
- wxPoint(0, 0), wxSize(100, 20),
- style, name);
+ wxStatusBar *statusBar = new wxStatusBar(this, id, style, name);
// Set the height according to the font and the border size
wxClientDC dc(statusBar);
dc.SetFont(statusBar->GetFont());
- long y;
+ wxCoord y;
dc.GetTextExtent( "X", NULL, &y );
int height = (int)( (11*y)/10 + 2*statusBar->GetBorderY());
- statusBar->SetSize( -1, -1, 100, height );
+ statusBar->SetSize( -1, -1, -1, height );
statusBar->SetFieldsCount(number);
void wxFrameBase::SetStatusText(const wxString& text, int number)
{
- wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
-
wxCHECK_RET( m_frameStatusBar != NULL, wxT("no statusbar to set text for") );
m_frameStatusBar->SetStatusText(text, number);
void wxFrameBase::SetStatusWidths(int n, const int widths_field[] )
{
- wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
-
wxCHECK_RET( m_frameStatusBar != NULL, wxT("no statusbar to set widths for") );
m_frameStatusBar->SetStatusWidths(n, widths_field);