X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fb2e8796de0ed029abdcdc370ffc600fe775888..6552c7af6c1e252b8b229f972721753ff058fa66:/src/gtk/frame.cpp?ds=sidebyside diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index b7b4fec93a..20b72a5865 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -221,7 +221,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 +232,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 } @@ -251,7 +251,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const { int x, y; m_frameToolBar->GetSize( &x, &y ); - if ( m_frameToolBar->GetWindowStyle() & wxTB_VERTICAL ) + if ( m_frameToolBar->IsVertical() ) { if (width != NULL) *width -= x; @@ -277,7 +277,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 +288,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 @@ -305,7 +305,7 @@ void wxFrame::DoSetClientSize( int width, int height ) { int x, y; m_frameToolBar->GetSize( &x, &y ); - if ( m_frameToolBar->GetWindowStyle() & wxTB_VERTICAL ) + if ( m_frameToolBar->IsVertical() ) { width += x; } @@ -352,19 +352,6 @@ void wxFrame::GtkOnSize() if (m_mainWidget) { - // set size hints - gint flag = 0; // GDK_HINT_POS; - if ((minWidth != -1) || (minHeight != -1)) flag |= GDK_HINT_MIN_SIZE; - if ((maxWidth != -1) || (maxHeight != -1)) flag |= GDK_HINT_MAX_SIZE; - GdkGeometry geom; - geom.min_width = minWidth; - geom.min_height = minHeight; - geom.max_width = maxWidth; - geom.max_height = maxHeight; - gtk_window_set_geometry_hints( GTK_WINDOW(m_widget), - (GtkWidget*) NULL, - &geom, - (GdkWindowHints) flag ); // TODO // Rewrite this terrible code to using GtkVBox @@ -372,7 +359,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 ); @@ -431,6 +418,17 @@ void wxFrame::GtkOnSize() client_area_x_offset += ww; } + else if( m_frameToolBar->HasFlag(wxTB_RIGHT) ) + { + yy += 2; + ww = m_toolBarDetached ? wxPLACE_HOLDER + : m_frameToolBar->m_width; + xx = GetClientSize().x - 1; + hh = m_height - 2*m_miniEdge; + if( hh < 0 ) + hh = 0; + + } else if( m_frameToolBar->GetWindowStyle() & wxTB_BOTTOM ) { xx = m_miniEdge; @@ -483,11 +481,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; @@ -633,20 +631,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(); }