+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ wxWindow::GetClientSize( width, height );
+ if (height)
+ {
+ if (m_frameMenuBar) (*height) -= wxMENU_HEIGHT;
+ if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ m_frameToolBar->GetSize( (int *) NULL, &y );
+ (*height) -= y;
+ }
+ (*height) -= m_miniEdge*2 + m_miniTitle;
+ }
+ if (width)
+ {
+ (*width) -= m_miniEdge*2;
+ }
+}
+
+void wxFrame::SetClientSize( int const width, int const height )
+{
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ int h = height;
+ if (m_frameMenuBar) h += wxMENU_HEIGHT;
+ if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ m_frameToolBar->GetSize( (int *) NULL, &y );
+ h += y;
+ }
+ wxWindow::SetClientSize( width + m_miniEdge*2, h + m_miniEdge*2 + m_miniTitle );
+}
+
+void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height )
+{
+ // due to a bug in gtk, x,y are always 0
+ // m_x = x;
+ // m_y = y;
+
+ if (m_resizing) return;
+ m_resizing = TRUE;
+
+ if (!m_wxwindow) return;
+
+ m_width = width;
+ m_height = height;
+
+ if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
+ if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
+ if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
+ if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
+
+ gtk_widget_set_usize( m_widget, m_width, m_height );
+
+ // this emulates the new wxMSW behaviour of placing all
+ // frame-subwindows (menu, toolbar..) on one native window
+ // OK, this hurts in the eye, but I don't want to call SetSize()
+ // because I don't want to call any non-native functions here.
+
+ if (m_frameMenuBar)
+ {
+ int xx = m_miniEdge;
+ int yy = m_miniEdge + m_miniTitle;
+ int ww = m_width - 2*m_miniEdge;
+ int hh = wxMENU_HEIGHT;
+ m_frameMenuBar->m_x = xx;
+ m_frameMenuBar->m_y = yy;
+ m_frameMenuBar->m_width = ww;
+ m_frameMenuBar->m_height = hh;
+
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, xx, yy );
+ gtk_widget_set_usize( m_frameMenuBar->m_widget, ww, hh );
+ }
+