X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5b2acc3a4f02058e76cdcbfad5d57a0988bbb138..c33c11fa1d2a0c4999e04386e04ac96cd350e853:/src/gtk/frame.cpp diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index b6c8bc5e42..1c46dd333f 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) + if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0)) { if (!m_menuBarDetached) (*height) -= m_menuBarHeight; @@ -232,7 +232,8 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const #if wxUSE_STATUSBAR // status bar - if (m_frameStatusBar && m_frameStatusBar->IsShown()) + if (m_frameStatusBar && m_frameStatusBar->IsShown() && + !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0)) (*height) -= wxSTATUS_HEIGHT; #endif // wxUSE_STATUSBAR } @@ -250,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; @@ -276,7 +277,7 @@ void wxFrame::DoSetClientSize( int width, int height ) #if wxUSE_MENUS_NATIVE // menu bar - if (m_frameMenuBar) + if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0)) { if (!m_menuBarDetached) height += m_menuBarHeight; @@ -287,7 +288,9 @@ void wxFrame::DoSetClientSize( int width, int height ) #if wxUSE_STATUSBAR // status bar - if (m_frameStatusBar && m_frameStatusBar->IsShown()) height += wxSTATUS_HEIGHT; + if (m_frameStatusBar && m_frameStatusBar->IsShown() && + !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0)) + height += wxSTATUS_HEIGHT; #endif #if wxUSE_TOOLBAR @@ -302,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; } @@ -349,29 +352,17 @@ 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 ); - - // I revert back to wxGTK's original behaviour. m_mainWidget holds - // the menubar, the toolbar and the client area, which is represented - // by m_wxwindow. - // This hurts in the eye, but I don't want to call SetSize() - // because I don't want to call any non-native functions here. + // TODO + // Rewrite this terrible code to using GtkVBox + + // m_mainWidget holds the menubar, the toolbar and the client + // area, which is represented by m_wxwindow. #if wxUSE_MENUS_NATIVE - if (m_frameMenuBar) + 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 ); int xx = m_miniEdge; int yy = m_miniEdge + m_miniTitle; int ww = m_width - 2*m_miniEdge; @@ -388,6 +379,14 @@ void wxFrame::GtkOnSize() xx, yy, ww, hh ); client_area_y_offset += hh; } + else + { + if (m_frameMenuBar) + { + if (GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget)) + gtk_widget_hide( m_frameMenuBar->m_widget ); + } + } #endif // wxUSE_MENUS_NATIVE #if wxUSE_TOOLBAR @@ -416,11 +415,20 @@ void wxFrame::GtkOnSize() ww = m_toolBarDetached ? wxPLACE_HOLDER : m_frameToolBar->m_width; hh = m_height - 2*m_miniEdge; - if (hh < 0) - hh = 0; 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; @@ -443,6 +451,10 @@ void wxFrame::GtkOnSize() client_area_y_offset += hh; } + if (ww < 0) + ww = 0; + if (hh < 0) + hh = 0; gtk_pizza_set_size( GTK_PIZZA(m_mainWidget), m_frameToolBar->m_widget, xx, yy, ww, hh ); @@ -468,8 +480,12 @@ void wxFrame::GtkOnSize() } #if wxUSE_STATUSBAR - if (m_frameStatusBar && m_frameStatusBar->IsShown()) + if (m_frameStatusBar && m_frameStatusBar->IsShown() && + !(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; @@ -484,6 +500,14 @@ void wxFrame::GtkOnSize() m_frameStatusBar->m_widget, xx, yy, ww, hh ); } + else + { + if (m_frameStatusBar) + { + if (GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget)) + gtk_widget_hide( m_frameStatusBar->m_widget ); + } + } #endif // wxUSE_STATUSBAR m_sizeSet = true;