X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/08f53168acef5006826b22c11fe562432193d854..3201a1046ba71ba8e5ef2ed694fde34d12f743f3:/src/generic/statusbr.cpp?ds=sidebyside diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp index d5330414b0..7e9e7791ff 100644 --- a/src/generic/statusbr.cpp +++ b/src/generic/statusbr.cpp @@ -23,6 +23,7 @@ #ifndef WX_PRECOMP #include "wx/settings.h" #include "wx/dcclient.h" + #include "wx/toplevel.h" #endif #ifdef __WXGTK20__ @@ -80,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); @@ -189,17 +190,27 @@ 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, @@ -223,19 +234,12 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) width-height-2, 2, height-2, height-4 ); } } -#endif +#endif // __WXGTK20__ if (GetFont().Ok()) dc.SetFont(GetFont()); - dc.SetBackgroundMode(wxTRANSPARENT); - -#ifdef __WXPM__ - wxColour vColor; - - vColor = wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR); - ::WinFillRect(dc.m_hPS, &dc.m_vRclPaint, vColor.GetPixel()); -#endif + dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT); for (int i = 0; i < m_nFields; i ++) DrawField(dc, i); @@ -367,23 +371,16 @@ bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const // Initialize colours void wxStatusBarGeneric::InitColours() { - // Shadow colours -#if defined(__WXMSW__) || defined(__WXMAC__) - wxColour mediumShadowColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)); - m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID); - - wxColour hilightColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT)); - m_hilightPen = wxPen(hilightColour, 1, wxSOLID); -#elif defined(__WXPM__) +#if defined(__WXPM__) m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID); m_hilightPen = *wxWHITE_PEN; SetBackgroundColour(*wxLIGHT_GREY); SetForegroundColour(*wxBLACK); -#else - m_mediumShadowPen = *wxGREY_PEN; - m_hilightPen = *wxWHITE_PEN; -#endif +#else // !__WXPM__ + m_mediumShadowPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)); + m_hilightPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT)); +#endif // __WXPM__/!__WXPM__ } // Responds to colour changes, and passes event on to children. @@ -415,7 +412,7 @@ 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 ); @@ -462,7 +459,7 @@ 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 );