// data
//-----------------------------------------------------------------------------
-extern wxList wxTopLevelWindows;
extern wxList wxPendingDelete;
//-----------------------------------------------------------------------------
gtk_widget_realize( m_widget );
+ long decor = (long) GDK_DECOR_ALL;
+ long func = (long) GDK_FUNC_ALL;
+
+ if ((m_windowStyle & wxCAPTION) == 0)
+ decor |= GDK_DECOR_TITLE;
+ if ((m_windowStyle & wxMINIMIZE) == 0)
+ func |= GDK_FUNC_MINIMIZE;
+ if ((m_windowStyle & wxMAXIMIZE) == 0)
+ func |= GDK_FUNC_MAXIMIZE;
+ if ((m_windowStyle & wxSYSTEM_MENU) == 0)
+ decor |= GDK_DECOR_MENU;
+ if ((m_windowStyle & wxMINIMIZE_BOX) == 0)
+ decor |= GDK_DECOR_MINIMIZE;
+ if ((m_windowStyle & wxMAXIMIZE_BOX) == 0)
+ decor |= GDK_DECOR_MAXIMIZE;
+ if ((m_windowStyle & wxRESIZE_BORDER) == 0)
+ func |= GDK_FUNC_RESIZE;
+
+ gdk_window_set_decorations(m_widget->window, (GdkWMDecoration)decor);
+ gdk_window_set_functions(m_widget->window, (GdkWMFunction)func);
+
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this );
if ((m_x != -1) || (m_y != -1))
{
if ((m_x != old_x) || (m_y != old_y))
- {
+ {
/* m_sizeSet = FALSE; */
- gtk_widget_set_uposition( m_widget, m_x, m_y );
- }
+ gtk_widget_set_uposition( m_widget, m_x, m_y );
+ }
}
if ((m_width != old_width) || (m_height != old_height))
}
else
{
- /* no child: go out ! */
- if (!GetChildren().First()) return;
-
- /* do we have exactly one child? */
- wxWindow *child = (wxWindow *) NULL;
- for(wxNode *node = GetChildren().First(); node; node = node->Next())
+ // do we have exactly one child?
+ wxWindow *child = (wxWindow *)NULL;
+ for ( wxNode *node = GetChildren().First(); node; node = node->Next() )
{
wxWindow *win = (wxWindow *)node->Data();
- if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog)
-#if 0 // not in m_children anyway ?
- && (win != m_frameMenuBar) &&
- (win != m_frameToolBar) &&
- (win != m_frameStatusBar)
-#endif
- )
+ if ( !wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) )
{
- /* it's the second one: do nothing */
- if (child) return;
+ if ( child )
+ {
+ // it's the second one: do nothing
+ return;
+ }
+
child = win;
}
}
- /* yes: set it's size to fill all the frame */
- int client_x, client_y;
- GetClientSize( &client_x, &client_y );
- child->SetSize( 1, 1, client_x-2, client_y-2 );
+ // no children at all?
+ if ( child )
+ {
+ // yes: set it's size to fill all the frame
+ int client_x, client_y;
+ GetClientSize( &client_x, &client_y );
+ child->SetSize( 1, 1, client_x-2, client_y-2 );
+ }
}
}
static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{
menu->SetInvokingWindow( win );
- wxNode *node = menu->m_items.First();
+ wxNode *node = menu->GetItems().First();
while (node)
{
wxMenuItem *menuitem = (wxMenuItem*)node->Data();
if (m_frameMenuBar)
{
- wxNode *node = m_frameMenuBar->m_menus.First();
+ wxNode *node = m_frameMenuBar->GetMenus().First();
while (node)
{
wxMenu *menu = (wxMenu*)node->Data();
gtk_myfixed_put( GTK_MYFIXED(m_wxwindow),
m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
- /* an mdi child menu bar might be underneath */
- if (m_mdiMenuBar) m_frameMenuBar->Show( FALSE );
+ /* an mdi child menu bar might be underneath */
+ if (m_mdiMenuBar)
+ m_frameMenuBar->Show( FALSE );
}
}
{
if (GetStatusBar())
{
- if (event.GetMenuId() == -1)
- {
- SetStatusText("");
- }
- else
+ // if no help string found, we will clear the status bar text
+ wxString helpString;
+
+ int menuId = event.GetMenuId();
+ if ( menuId != -1 )
{
wxMenuBar *menuBar = GetMenuBar();
if (menuBar)
{
- int menuId = event.GetMenuId();
- wxString helpString;
helpString = menuBar->GetHelpString(menuId);
- if (helpString != "")
- SetStatusText(helpString);
}
}
+
+ SetStatusText(helpString);
}
}
return statusBar;
}
+void wxFrame::Command( int id )
+{
+ wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id);
+ commandEvent.SetInt( id );
+ commandEvent.SetEventObject( this );
+
+ wxMenuBar *bar = GetMenuBar();
+ if (!bar) return;
+
+ wxMenuItem *item = bar->FindItemForId(id) ;
+ if (item && item->IsCheckable())
+ {
+ bar->Check(id,!bar->Checked(id)) ;
+ }
+
+ wxEvtHandler* evtHandler = GetEventHandler();
+
+ evtHandler->ProcessEvent(commandEvent);
+}
+
void wxFrame::SetStatusText(const wxString& text, int number)
{
wxASSERT_MSG( (m_widget != NULL), "invalid frame" );