X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b13862ee62355f46a021b4e6d6d6a6bba47f5435..2586d4a12176c79b2c34859c95db17cf45b54204:/src/univ/stdrend.cpp diff --git a/src/univ/stdrend.cpp b/src/univ/stdrend.cpp index 54c3177883..4b25de7700 100644 --- a/src/univ/stdrend.cpp +++ b/src/univ/stdrend.cpp @@ -42,6 +42,9 @@ static const int FRAME_TITLEBAR_HEIGHT = 18; static const int FRAME_BUTTON_WIDTH = 16; static const int FRAME_BUTTON_HEIGHT = 14; +// the margin between listbox item text and its rectangle +static const int ITEM_MARGIN = 1; + // ============================================================================ // wxStdRenderer implementation // ============================================================================ @@ -184,7 +187,8 @@ void wxStdRenderer::DrawButtonSurface(wxDC& dc, // text // ---------------------------------------------------------------------------- -void wxStdRenderer::DrawFocusRect(wxDC& dc, const wxRect& rect) +void +wxStdRenderer::DrawFocusRect(wxDC& dc, const wxRect& rect, int WXUNUSED(flags)) { // draw the pixels manually because the "dots" in wxPen with wxDOT style // may be short traits and not really dots @@ -482,7 +486,7 @@ bool wxStdRenderer::AreScrollbarsInsideBorder() const wxCoord wxStdRenderer::GetListboxItemHeight(wxCoord fontHeight) { - return fontHeight + 2; + return fontHeight + 2*ITEM_MARGIN; } void wxStdRenderer::DrawTextBorder(wxDC& dc, @@ -608,14 +612,14 @@ void wxStdRenderer::DrawItem(wxDC& dc, dc.DrawRectangle(rect); } + // horizontal adjustment is arbitrary wxRect rectText = rect; - rectText.x += 2; - rectText.width -= 2; + rectText.Deflate(2, ITEM_MARGIN); dc.DrawLabel(label, wxNullBitmap, rectText); if ( flags & wxCONTROL_FOCUSED ) { - DrawFocusRect(dc, rect); + DrawFocusRect(dc, rect, flags); } } @@ -1092,11 +1096,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); } @@ -1113,7 +1136,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);