X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9379c0d752144826342fa2688a77aa5cccea3d9b..047c1182f94ca7941b08170cddbb5880f1023055:/src/gtk/frame.cpp diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index 08a0d0e713..027d3bf090 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -18,7 +18,7 @@ #include "wx/statusbr.h" #endif // WX_PRECOMP -#include "wx/gtk/private.h" +#include #include "wx/gtk/win_gtk.h" // ---------------------------------------------------------------------------- @@ -65,9 +65,6 @@ static void gtk_menu_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidget * extern "C" { static void gtk_menu_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *WXUNUSED(child), wxFrame *win ) { - if (g_isIdle) - wxapp_install_idle_handler(); - if (!win->m_hasVMT) return; // Raise the client area area @@ -102,9 +99,6 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge extern "C" { static void gtk_toolbar_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *WXUNUSED(child), wxFrame *win ) { - if (g_isIdle) - wxapp_install_idle_handler(); - if (!win->m_hasVMT) return; // Raise the client area area @@ -139,7 +133,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) // These are outside the client area wxFrame* frame = (wxFrame*) parent; gtk_pizza_put( GTK_PIZZA(frame->m_mainWidget), - GTK_WIDGET(child->m_widget), + child->m_widget, child->m_x, child->m_y, child->m_width, @@ -167,7 +161,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) { // These are inside the client area gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow), - GTK_WIDGET(child->m_widget), + child->m_widget, child->m_x, child->m_y, child->m_width, @@ -221,7 +215,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const { #if wxUSE_MENUS_NATIVE // menu bar - if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR != 0))) + if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0)) { if (!m_menuBarDetached) (*height) -= m_menuBarHeight; @@ -232,8 +226,8 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const #if wxUSE_STATUSBAR // status bar - if (m_frameStatusBar && m_frameStatusBar->IsShown() && - !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR != 0))) + if (m_frameStatusBar && m_frameStatusBar->IsShown() && + !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0)) (*height) -= wxSTATUS_HEIGHT; #endif // wxUSE_STATUSBAR } @@ -277,7 +271,7 @@ void wxFrame::DoSetClientSize( int width, int height ) #if wxUSE_MENUS_NATIVE // menu bar - if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR != 0))) + if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0)) { if (!m_menuBarDetached) height += m_menuBarHeight; @@ -288,8 +282,8 @@ void wxFrame::DoSetClientSize( int width, int height ) #if wxUSE_STATUSBAR // status bar - if (m_frameStatusBar && m_frameStatusBar->IsShown() && - !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR != 0))) + if (m_frameStatusBar && m_frameStatusBar->IsShown() && + !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0)) height += wxSTATUS_HEIGHT; #endif @@ -340,15 +334,7 @@ void wxFrame::GtkOnSize() skip the part which handles m_frameMenuBar, m_frameToolBar and (most importantly) m_mainWidget */ - int minWidth = GetMinWidth(), - minHeight = GetMinHeight(), - maxWidth = GetMaxWidth(), - maxHeight = GetMaxHeight(); - - if ((minWidth != -1) && (m_width < minWidth)) m_width = minWidth; - if ((minHeight != -1) && (m_height < minHeight)) m_height = minHeight; - if ((maxWidth != -1) && (m_width > maxWidth)) m_width = maxWidth; - if ((maxHeight != -1) && (m_height > maxHeight)) m_height = maxHeight; + ConstrainSize(); if (m_mainWidget) { @@ -359,7 +345,7 @@ void wxFrame::GtkOnSize() // area, which is represented by m_wxwindow. #if wxUSE_MENUS_NATIVE - if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR != 0))) + if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0)) { if (!GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget)) gtk_widget_show( m_frameMenuBar->m_widget ); @@ -481,11 +467,11 @@ void wxFrame::GtkOnSize() #if wxUSE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsShown() && - !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR != 0))) + !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0)) { if (!GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget)) gtk_widget_show( m_frameStatusBar->m_widget ); - + int xx = 0 + m_miniEdge; int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge - client_area_y_offset; int ww = m_width - 2*m_miniEdge; @@ -631,20 +617,22 @@ void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) void wxFrame::UpdateMenuBarSize() { - GtkRequisition req; - - req.width = 2; - req.height = 2; + m_menuBarHeight = 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 ); - - m_menuBarHeight = req.height; + { + GtkRequisition req; + gtk_widget_ensure_style(m_frameMenuBar->m_widget); + // have to call class method directly because + // "size_request" signal is overridden by wx + GTK_WIDGET_GET_CLASS(m_frameMenuBar->m_widget)->size_request( + m_frameMenuBar->m_widget, &req); + + m_menuBarHeight = req.height; + } // resize window in OnInternalIdle - GtkUpdateSize(); }