X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85ad5eb54d74e371bc4bce6ff92f2de70fd21ac9..32d4bfd16c554ba060ccee9236abb8e7ff0e913a:/src/gtk/frame.cpp diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index eadb75575f..61259fad4b 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -16,8 +16,12 @@ #include "wx/control.h" #include "wx/app.h" #include "wx/menu.h" +#if wxUSE_TOOLBAR #include "wx/toolbar.h" +#endif +#if wxUSE_STATUSBAR #include "wx/statusbr.h" +#endif #include "wx/dcclient.h" #include "glib.h" @@ -148,19 +152,28 @@ static void gtk_toolbar_detached_callback( GtkWidget *widget, GtkWidget *WXUNUSE // "configure_event" //----------------------------------------------------------------------------- -static gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxFrame *win ) +static gint +#if (GTK_MINOR_VERSON > 0) +gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxFrame *win ) +#else +gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxFrame *win ) +#endif { - if (g_isIdle) + if (g_isIdle) wxapp_install_idle_handler(); if (!win->m_hasVMT) return FALSE; +#if (GTK_MINOR_VERSON > 0) int x = 0; int y = 0; gdk_window_get_root_origin( win->m_widget->window, &x, &y ); - win->m_x = x; win->m_y = y; +#else + win->m_x = event->x; + win->m_y = event->y; +#endif wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() ); mevent.SetEventObject( win ); @@ -560,9 +573,12 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const (*height) -= wxPLACE_HOLDER; } +#if wxUSE_STATUSBAR /* status bar */ if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT; +#endif +#if wxUSE_TOOLBAR /* tool bar */ if (m_frameToolBar) { @@ -575,6 +591,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const else (*height) -= wxPLACE_HOLDER; } +#endif /* mini edge */ (*height) -= m_miniEdge*2 + m_miniTitle; @@ -598,9 +615,12 @@ void wxFrame::DoSetClientSize( int width, int height ) height += wxPLACE_HOLDER; } +#if wxUSE_STATUSBAR /* status bar */ if (m_frameStatusBar) height += wxSTATUS_HEIGHT; +#endif +#if wxUSE_TOOLBAR /* tool bar */ if (m_frameToolBar) { @@ -613,6 +633,7 @@ void wxFrame::DoSetClientSize( int width, int height ) else height += wxPLACE_HOLDER; } +#endif wxWindow::DoSetClientSize( width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle ); } @@ -674,6 +695,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height client_area_y_offset += hh; } +#if wxUSE_TOOLBAR if (m_frameToolBar) { int xx = m_miniEdge; @@ -697,6 +719,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height xx, yy, ww, hh ); client_area_y_offset += hh; } +#endif int client_x = m_miniEdge; int client_y = client_area_y_offset + m_miniEdge + m_miniTitle; @@ -712,6 +735,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height is no need to set the size or position of m_wxwindow. */ } +#if wxUSE_STATUSBAR if (m_frameStatusBar) { int xx = 0 + m_miniEdge; @@ -726,6 +750,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height m_frameStatusBar->m_widget, xx, yy, ww, hh ); } +#endif /* we actually set the size of a frame here and no-where else */ gtk_widget_set_usize( m_widget, m_width, m_height ); @@ -764,8 +789,12 @@ void wxFrame::OnInternalIdle() DoMenuUpdates(); if (m_frameMenuBar) m_frameMenuBar->OnInternalIdle(); +#if wxUSE_TOOLBAR if (m_frameToolBar) m_frameToolBar->OnInternalIdle(); +#endif +#if wxUSE_STATUSBAR if (m_frameStatusBar) m_frameStatusBar->OnInternalIdle(); +#endif } void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) ) @@ -813,25 +842,6 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) ) } } -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - -#if (GTK_MINOR_VERSION > 0) - /* support for native hot keys */ - gtk_accel_group_attach( menu->m_accel, GTK_OBJECT(win->m_widget)); -#endif - - wxNode *node = menu->GetItems().First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } -} - void wxFrame::SetMenuBar( wxMenuBar *menuBar ) { wxASSERT_MSG( (m_widget != NULL), _T("invalid frame") ); @@ -841,18 +851,7 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar ) if (m_frameMenuBar) { -#if (GTK_MINOR_VERSION > 0) && (GTK_MICRO_VERSION > 0) - /* support for native key accelerators indicated by underscroes */ - gtk_accel_group_attach( m_frameMenuBar->m_accel, GTK_OBJECT(m_widget)); -#endif - - wxNode *node = m_frameMenuBar->GetMenus().First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } + m_frameMenuBar->SetInvokingWindow( this ); if (m_frameMenuBar->GetParent() != this) { @@ -872,6 +871,8 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar ) gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_detached", GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this ); } + + m_frameMenuBar->Show( TRUE ); } }