X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0a5c89cfec72c478d538f92916e4abacc2309bd3..67650ea0b976c6d8a93c47858301a0a9d7c4bdf4:/src/univ/stdrend.cpp?ds=sidebyside diff --git a/src/univ/stdrend.cpp b/src/univ/stdrend.cpp index ad54f2e1b8..147fcd0639 100644 --- a/src/univ/stdrend.cpp +++ b/src/univ/stdrend.cpp @@ -25,6 +25,10 @@ #ifndef WX_PRECOMP #include "wx/settings.h" + #include "wx/brush.h" + #include "wx/dc.h" + #include "wx/statusbr.h" + #include "wx/toplevel.h" #endif //WX_PRECOMP #include "wx/univ/stdrend.h" @@ -34,8 +38,6 @@ // constants // ---------------------------------------------------------------------------- -static const int FRAME_BORDER_THICKNESS = 3; -static const int RESIZEABLE_FRAME_BORDER_THICKNESS = 4; static const int FRAME_TITLEBAR_HEIGHT = 18; static const int FRAME_BUTTON_WIDTH = 16; static const int FRAME_BUTTON_HEIGHT = 14; @@ -1090,11 +1092,30 @@ int wxStdRenderer::PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord) #if wxUSE_STATUSBAR -wxSize wxStdRenderer::GetStatusBarBorders(wxCoord *borderBetweenFields) const +wxSize wxStdRenderer::GetStatusBarBorders() const { - if ( borderBetweenFields ) - *borderBetweenFields = 2; + // Rendered border may be different depending on field's style, we use + // the largest value so that any field certainly fits into the borders + // we return: + wxRect raised = GetBorderDimensions(wxBORDER_RAISED); + wxRect flat = GetBorderDimensions(wxBORDER_STATIC); + wxASSERT_MSG( raised.x == raised.width && raised.y == raised.height && + flat.x == flat.width && flat.y == flat.height, + _T("this code expects uniform borders, you must override GetStatusBarBorders") ); + + // take the larger of flat/raised values: + wxSize border(wxMax(raised.x, flat.x), wxMax(raised.y, flat.y)); + + return border; +} + +wxCoord wxStdRenderer::GetStatusBarBorderBetweenFields() const +{ + return 2; +} +wxSize wxStdRenderer::GetStatusBarFieldMargins() const +{ return wxSize(2, 2); } @@ -1111,7 +1132,7 @@ void wxStdRenderer::DrawStatusField(wxDC& dc, else if ( style != wxSB_FLAT ) DrawBorder(dc, wxBORDER_STATIC, rect, flags, &rectIn); - rectIn.Deflate(GetStatusBarBorders(NULL)); + rectIn.Deflate(GetStatusBarFieldMargins()); wxDCClipper clipper(dc, rectIn); DrawLabel(dc, label, rectIn, flags, wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL); @@ -1411,6 +1432,11 @@ void wxStdRenderer::DrawFrameButton(wxDC& dc, dc.DrawBitmap(bmp, rectBmp.CentreIn(rectBtn).GetPosition(), true); } +int wxStdRenderer::GetFrameBorderWidth(int flags) const +{ + return flags & wxTOPLEVEL_RESIZEABLE ? 4 : 3; +} + wxRect wxStdRenderer::GetFrameClientArea(const wxRect& rect, int flags) const { @@ -1418,10 +1444,7 @@ wxRect wxStdRenderer::GetFrameClientArea(const wxRect& rect, int flags) const if ( (flags & wxTOPLEVEL_BORDER) && !(flags & wxTOPLEVEL_MAXIMIZED) ) { - int border = flags & wxTOPLEVEL_RESIZEABLE - ? RESIZEABLE_FRAME_BORDER_THICKNESS - : FRAME_BORDER_THICKNESS; - r.Inflate(-border); + r.Inflate(-GetFrameBorderWidth(flags)); } if ( flags & wxTOPLEVEL_TITLEBAR ) @@ -1440,11 +1463,7 @@ wxStdRenderer::GetFrameTotalSize(const wxSize& clientSize, int flags) const if ( (flags & wxTOPLEVEL_BORDER) && !(flags & wxTOPLEVEL_MAXIMIZED) ) { - int border = flags & wxTOPLEVEL_RESIZEABLE - ? RESIZEABLE_FRAME_BORDER_THICKNESS - : FRAME_BORDER_THICKNESS; - s.x += 2*border; - s.y += 2*border; + s.IncBy(2*GetFrameBorderWidth(flags)); } if ( flags & wxTOPLEVEL_TITLEBAR ) @@ -1459,11 +1478,7 @@ wxSize wxStdRenderer::GetFrameMinSize(int flags) const if ( (flags & wxTOPLEVEL_BORDER) && !(flags & wxTOPLEVEL_MAXIMIZED) ) { - int border = (flags & wxTOPLEVEL_RESIZEABLE) ? - RESIZEABLE_FRAME_BORDER_THICKNESS : - FRAME_BORDER_THICKNESS; - s.x += 2*border; - s.y += 2*border; + s.IncBy(2*GetFrameBorderWidth(flags)); } if ( flags & wxTOPLEVEL_TITLEBAR )