+bool wxFrame::Create( wxWindow *parent,
+ wxWindowID id,
+ const wxString &title,
+ const wxPoint &pos,
+ const wxSize &size,
+ long style,
+ const wxString &name )
+{
+ wxTopLevelWindows.Append( this );
+
+ m_needParent = FALSE;
+
+ if (!PreCreation( parent, pos, size ) ||
+ !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
+ {
+ wxFAIL_MSG( wxT("wxFrame creation failed") );
+ return FALSE;
+ }
+
+ m_title = title;
+
+ m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame;
+
+ GtkWindowType win_type = GTK_WINDOW_TOPLEVEL;
+ if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP;
+
+ m_widget = gtk_window_new( win_type );
+
+ if (!name.IsEmpty())
+ gtk_window_set_wmclass( GTK_WINDOW(m_widget), name.mb_str(), name.mb_str() );
+
+#ifdef __WXDEBUG__
+ debug_focus_in( m_widget, wxT("wxFrame::m_widget"), name );
+#endif
+
+ gtk_window_set_title( GTK_WINDOW(m_widget), title.mbc_str() );
+ GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
+
+ gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event",
+ GTK_SIGNAL_FUNC(gtk_frame_delete_callback), (gpointer)this );
+
+ /* m_mainWidget holds the toolbar, the menubar and the client area */
+ m_mainWidget = gtk_pizza_new();
+ gtk_widget_show( m_mainWidget );
+ GTK_WIDGET_UNSET_FLAGS( m_mainWidget, GTK_CAN_FOCUS );
+ gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
+
+#ifdef __WXDEBUG__
+ debug_focus_in( m_mainWidget, wxT("wxFrame::m_mainWidget"), name );
+#endif
+
+ /* m_wxwindow only represents the client area without toolbar and menubar */
+ m_wxwindow = gtk_pizza_new();
+ gtk_widget_show( m_wxwindow );
+ gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
+
+#ifdef __WXDEBUG__
+ debug_focus_in( m_wxwindow, wxT("wxFrame::m_wxwindow"), name );
+#endif
+
+ /* we donm't allow the frame to get the focus as otherwise
+ the frame will grabit at arbitrary fcous changes. */
+ GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
+
+ if (m_parent) m_parent->AddChild( this );
+
+ /* the user resized the frame by dragging etc. */
+ gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
+ GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this );
+
+ PostCreation();
+
+ /* we cannot set MWM hints and icons before the widget has
+ been realized, so we do this directly after realization */
+ gtk_signal_connect( GTK_OBJECT(m_widget), "realize",
+ GTK_SIGNAL_FUNC(gtk_frame_realized_callback), (gpointer) this );
+
+ /* the only way to get the window size is to connect to this event */
+ gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
+ GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this );
+
+ /* disable native tab traversal */
+ gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
+ GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this );
+
+ return TRUE;
+}