X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/865bb3251ecf83ddac350b734f4fed1d258e250b..c5d7205ca284d90d3f68d4b8a67ecca2b07f71ef:/src/gtk/frame.cpp diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index 1bf86a39a5..34e6b9de37 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp +// Name: src/gtk/frame.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -7,6 +7,9 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + // ============================================================================ // declarations // ============================================================================ @@ -15,27 +18,22 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "frame.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" +#include "wx/frame.h" -#include "wx/defs.h" +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/dcclient.h" + #include "wx/menu.h" + #include "wx/dialog.h" + #include "wx/control.h" +#endif // WX_PRECOMP -#include "wx/frame.h" -#include "wx/dialog.h" -#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 #include "wx/gtk/private.h" @@ -52,14 +50,6 @@ const int wxSTATUS_HEIGHT = 25; const int wxPLACE_HOLDER = 0; -// ---------------------------------------------------------------------------- -// idle system -// ---------------------------------------------------------------------------- - -extern void wxapp_install_idle_handler(); -extern bool g_isIdle; -extern int g_openDialogs; - // ---------------------------------------------------------------------------- // event tables // ---------------------------------------------------------------------------- @@ -85,7 +75,7 @@ static void gtk_menu_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidget * { if (!win->m_hasVMT) return; - win->m_menuBarDetached = FALSE; + win->m_menuBarDetached = false; win->GtkUpdateSize(); } } @@ -105,7 +95,7 @@ static void gtk_menu_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidget * // Raise the client area area gdk_window_raise( win->m_wxwindow->window ); - win->m_menuBarDetached = TRUE; + win->m_menuBarDetached = true; win->GtkUpdateSize(); } } @@ -122,7 +112,7 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge { if (!win->m_hasVMT) return; - win->m_toolBarDetached = FALSE; + win->m_toolBarDetached = false; win->GtkUpdateSize(); } } @@ -142,7 +132,7 @@ static void gtk_toolbar_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidge // Raise the client area area gdk_window_raise( win->m_wxwindow->window ); - win->m_toolBarDetached = TRUE; + win->m_toolBarDetached = true; win->GtkUpdateSize(); } } @@ -176,7 +166,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_y, child->m_width, child->m_height ); - + #if wxUSE_TOOLBAR_NATIVE // We connect to these events for recalculating the client area // space when the toolbar is floating @@ -185,11 +175,12 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) wxToolBar *toolBar = (wxToolBar*) child; if (toolBar->GetWindowStyle() & wxTB_DOCKABLE) { - gtk_signal_connect( GTK_OBJECT(toolBar->m_widget), "child_attached", - GTK_SIGNAL_FUNC(gtk_toolbar_attached_callback), (gpointer)parent ); - - gtk_signal_connect( GTK_OBJECT(toolBar->m_widget), "child_detached", - GTK_SIGNAL_FUNC(gtk_toolbar_detached_callback), (gpointer)parent ); + g_signal_connect (toolBar->m_widget, "child_attached", + G_CALLBACK (gtk_toolbar_attached_callback), + parent); + g_signal_connect (toolBar->m_widget, "child_detached", + G_CALLBACK (gtk_toolbar_detached_callback), + parent); } } #endif // wxUSE_TOOLBAR @@ -204,7 +195,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_width, child->m_height ); } - + // Resize on OnInternalIdle parent->GtkUpdateSize(); } @@ -215,8 +206,8 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) void wxFrame::Init() { - m_menuBarDetached = FALSE; - m_toolBarDetached = FALSE; + m_menuBarDetached = false; + m_toolBarDetached = false; m_menuBarHeight = 2; } @@ -231,13 +222,13 @@ bool wxFrame::Create( wxWindow *parent, bool rt = wxTopLevelWindow::Create(parent, id, title, pos, sizeOrig, style, name); m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame; - + return rt; } wxFrame::~wxFrame() { - m_isBeingDeleted = TRUE; + m_isBeingDeleted = true; DeleteAllBars(); } @@ -352,7 +343,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), // avoid recursions if (m_resizing) return; - m_resizing = TRUE; + m_resizing = true; // this shouldn't happen: wxFrame, wxMDIParentFrame and wxMDIChildFrame have m_wxwindow wxASSERT_MSG( (m_wxwindow != NULL), wxT("invalid frame") ); @@ -494,11 +485,16 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), gtk_pizza_set_size( GTK_PIZZA(m_wxwindow), m_frameStatusBar->m_widget, xx, yy, ww, hh ); - gtk_widget_draw( m_frameStatusBar->m_widget, (GdkRectangle*) NULL ); + if (GTK_WIDGET_DRAWABLE (m_frameStatusBar->m_widget)) + { + gtk_widget_queue_draw (m_frameStatusBar->m_widget); + // FIXME: Do we really want to force an immediate redraw? + gdk_window_process_updates (m_frameStatusBar->m_widget->window, TRUE); + } } #endif // wxUSE_STATUSBAR - m_sizeSet = TRUE; + m_sizeSet = true; // send size event to frame wxSizeEvent event( wxSize(m_width,m_height), GetId() ); @@ -515,7 +511,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), } #endif // wxUSE_STATUSBAR - m_resizing = FALSE; + m_resizing = false; } void wxFrame::OnInternalIdle() @@ -563,11 +559,13 @@ void wxFrame::DetachMenuBar() if (m_frameMenuBar->GetWindowStyle() & wxMB_DOCKABLE) { - gtk_signal_disconnect_by_func( GTK_OBJECT(m_frameMenuBar->m_widget), - GTK_SIGNAL_FUNC(gtk_menu_attached_callback), (gpointer)this ); + g_signal_handlers_disconnect_by_func (m_frameMenuBar->m_widget, + (gpointer) gtk_menu_attached_callback, + this); - gtk_signal_disconnect_by_func( GTK_OBJECT(m_frameMenuBar->m_widget), - GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this ); + g_signal_handlers_disconnect_by_func (m_frameMenuBar->m_widget, + (gpointer) gtk_menu_detached_callback, + this); } gtk_widget_ref( m_frameMenuBar->m_widget ); @@ -596,13 +594,14 @@ void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) if (menuBar->GetWindowStyle() & wxMB_DOCKABLE) { - gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_attached", - GTK_SIGNAL_FUNC(gtk_menu_attached_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_detached", - GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this ); + g_signal_connect (menuBar->m_widget, "child_attached", + G_CALLBACK (gtk_menu_attached_callback), + this); + g_signal_connect (menuBar->m_widget, "child_detached", + G_CALLBACK (gtk_menu_detached_callback), + this); } - + gtk_widget_show( m_frameMenuBar->m_widget ); UpdateMenuBarSize(); @@ -620,15 +619,15 @@ void wxFrame::UpdateMenuBarSize() req.width = 2; req.height = 2; - + // this is called after Remove with a NULL m_frameMenuBar if ( m_frameMenuBar ) - (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_frameMenuBar->m_widget) )->size_request ) - (m_frameMenuBar->m_widget, &req ); + (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_frameMenuBar->m_widget) )->size_request ) + (m_frameMenuBar->m_widget, &req ); m_menuBarHeight = req.height; - // resize window in OnInternalIdle + // resize window in OnInternalIdle GtkUpdateSize(); } @@ -641,11 +640,11 @@ wxToolBar* wxFrame::CreateToolBar( long style, wxWindowID id, const wxString& na { wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") ); - m_insertInClientArea = FALSE; + m_insertInClientArea = false; m_frameToolBar = wxFrameBase::CreateToolBar( style, id, name ); - m_insertInClientArea = TRUE; + m_insertInClientArea = true; GtkUpdateSize(); @@ -700,10 +699,10 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, void wxFrame::SetStatusBar(wxStatusBar *statbar) { bool hadStatBar = m_frameStatusBar != NULL; - + wxFrameBase::SetStatusBar(statbar); - - if (hadStatBar && !m_frameStatusBar) + + if (hadStatBar && !m_frameStatusBar) GtkUpdateSize(); } @@ -715,4 +714,3 @@ void wxFrame::PositionStatusBar() GtkUpdateSize(); } #endif // wxUSE_STATUSBAR -