]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/framecmn.cpp
1. wxWizard supports setting images for each page, sample updated to show it
[wxWidgets.git] / src / common / framecmn.cpp
index a1c9575cfa2f45323fe7f1fb192f27d0626de211..d5bbdbfb1cb0de6037ea5b8e5138b9f0492d999a 100644 (file)
@@ -117,6 +117,61 @@ void wxFrameBase::DeleteAllBars()
 #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() )
+    {
+        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
 // ----------------------------------------------------------------------------
@@ -160,7 +215,7 @@ bool wxFrameBase::ProcessCommand(int id)
 
 // 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
@@ -210,9 +265,9 @@ void wxFrameBase::OnSize(wxSizeEvent& event)
             // 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);
@@ -221,7 +276,7 @@ void wxFrameBase::OnSize(wxSizeEvent& event)
 }
 
 // The default implementation for the close window event.
-void wxFrameBase::OnCloseWindow(wxCloseEvent& event)
+void wxFrameBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 {
     Destroy();
 }
@@ -305,8 +360,6 @@ wxStatusBar *wxFrameBase::OnCreateStatusBar(int 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);
@@ -314,8 +367,6 @@ void wxFrameBase::SetStatusText(const wxString& text, int 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);