#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"
// "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 );
int old_width = m_width;
int old_height = m_height;
- if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING)
+ if ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)
{
if (x != -1) m_x = x;
if (y != -1) m_y = y;
(*height) -= wxPLACE_HOLDER;
}
+#if wxUSE_STATUSBAR
/* status bar */
if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
+#endif
+#if wxUSE_TOOLBAR
/* tool bar */
if (m_frameToolBar)
{
else
(*height) -= wxPLACE_HOLDER;
}
+#endif
/* mini edge */
(*height) -= m_miniEdge*2 + m_miniTitle;
height += wxPLACE_HOLDER;
}
+#if wxUSE_STATUSBAR
/* status bar */
if (m_frameStatusBar) height += wxSTATUS_HEIGHT;
+#endif
+#if wxUSE_TOOLBAR
/* tool bar */
if (m_frameToolBar)
{
else
height += wxPLACE_HOLDER;
}
+#endif
wxWindow::DoSetClientSize( width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle );
}
client_area_y_offset += hh;
}
+#if wxUSE_TOOLBAR
if (m_frameToolBar)
{
int xx = m_miniEdge;
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;
is no need to set the size or position of m_wxwindow. */
}
+#if wxUSE_STATUSBAR
if (m_frameStatusBar)
{
int xx = 0 + m_miniEdge;
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 );
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) )
}
}
-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") );
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)
{
gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_detached",
GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this );
}
+
+ m_frameMenuBar->Show( TRUE );
}
}