X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8168167976dc3cc5f5223a21e1a62ba91a4f77b3..9a958328220b25226d259e43791eee4b06fe86ef:/src/generic/statusbr.cpp diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp index 163c13cab3..96b845a3bb 100644 --- a/src/generic/statusbr.cpp +++ b/src/generic/statusbr.cpp @@ -23,11 +23,11 @@ #ifndef WX_PRECOMP #include "wx/settings.h" #include "wx/dcclient.h" + #include "wx/toplevel.h" #endif #ifdef __WXGTK20__ #include - #include "wx/gtk/win_gtk.h" #endif // we only have to do it here when we use wxStatusBarGeneric in addition to the @@ -81,14 +81,14 @@ bool wxStatusBarGeneric::Create(wxWindow *parent, SetFont(*wxSMALL_FONT); #endif - wxCoord y; - { - // Set the height according to the font and the border size - wxClientDC dc(this); - dc.SetFont(GetFont()); + wxCoord y; + { + // Set the height according to the font and the border size + wxClientDC dc(this); + dc.SetFont(GetFont()); - dc.GetTextExtent(_T("X"), NULL, &y ); - } + dc.GetTextExtent(_T("X"), NULL, &y ); + } int height = (int)( (11*y)/10 + 2*GetBorderY()); SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height); @@ -190,21 +190,31 @@ void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[]) wxStatusBarBase::SetStatusWidths(n, widths_field); } +bool wxStatusBarGeneric::ShowsSizeGrip() const +{ + if ( !HasFlag(wxST_SIZEGRIP) ) + return false; + + wxTopLevelWindow * const + tlw = wxDynamicCast(wxGetTopLevelParent(GetParent()), wxTopLevelWindow); + return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER); +} + void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); #ifdef __WXGTK20__ // Draw grip first - if (HasFlag( wxST_SIZEGRIP )) + if ( ShowsSizeGrip() ) { int width, height; GetClientSize(&width, &height); - + if (GetLayoutDirection() == wxLayout_RightToLeft) { gtk_paint_resize_grip( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, + GTKGetDrawingWindow(), (GtkStateType) GTK_WIDGET_STATE (m_widget), NULL, m_widget, @@ -215,7 +225,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) else { gtk_paint_resize_grip( m_widget->style, - GTK_PIZZA(m_wxwindow)->bin_window, + GTKGetDrawingWindow(), (GtkStateType) GTK_WIDGET_STATE (m_widget), NULL, m_widget, @@ -224,7 +234,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) width-height-2, 2, height-2, height-4 ); } } -#endif +#endif // __WXGTK20__ if (GetFont().Ok()) dc.SetFont(GetFont()); @@ -251,7 +261,7 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i) wxString text(GetStatusText(i)); - long x = 0, y = 0; + wxCoord x = 0, y = 0; dc.GetTextExtent(text, &x, &y); @@ -416,14 +426,14 @@ void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event) int width, height; GetClientSize(&width, &height); - if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + if ( ShowsSizeGrip() && (event.GetX() > width-height) ) { GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget ); if (!GTK_IS_WINDOW (ancestor)) return; - GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window; + GdkWindow *source = GTKGetDrawingWindow(); int org_x = 0; int org_y = 0; @@ -463,14 +473,14 @@ void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event) int width, height; GetClientSize(&width, &height); - if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + if ( ShowsSizeGrip() && (event.GetX() > width-height) ) { GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget ); if (!GTK_IS_WINDOW (ancestor)) return; - GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window; + GdkWindow *source = GTKGetDrawingWindow(); int org_x = 0; int org_y = 0;