From: Julian Smart Date: Fri, 22 Aug 2008 10:34:14 +0000 (+0000) Subject: Generic carent no longer invisible on a dark background X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b331ca89b26d8146b1f7f3b60d56092997231adb Generic carent no longer invisible on a dark background git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/generic/caret.cpp b/src/generic/caret.cpp index 5cad74d086..cf90f59851 100644 --- a/src/generic/caret.cpp +++ b/src/generic/caret.cpp @@ -268,10 +268,37 @@ void wxCaret::Refresh() void wxCaret::DoDraw(wxDC *dc) { - dc->SetPen( *wxBLACK_PEN ); - - dc->SetBrush(*(m_hasFocus ? wxBLACK_BRUSH : wxTRANSPARENT_BRUSH)); - dc->SetPen(*wxBLACK_PEN); +#if defined(__WXGTK__) || defined(__WXMAC__) + wxClientDC* clientDC = wxDynamicCast(dc, wxClientDC); + if (clientDC) + { + wxPen pen(*wxBLACK_PEN); + wxBrush brush(*wxBLACK_BRUSH); +#ifdef __WXGTK__ + wxWindow* win = clientDC->m_owner; +#else + wxWindow* win = clientDC->GetWindow(); +#endif + if (win) + { + wxColour backgroundColour(win->GetBackgroundColour()); + if (backgroundColour.Red() < 100 && + backgroundColour.Green() < 100 && + backgroundColour.Blue() < 100) + { + pen = *wxWHITE_PEN; + brush = *wxWHITE_BRUSH; + } + } + dc->SetPen( pen ); + dc->SetBrush(m_hasFocus ? brush : *wxTRANSPARENT_BRUSH); + } + else +#endif + { + dc->SetBrush(*(m_hasFocus ? wxBLACK_BRUSH : wxTRANSPARENT_BRUSH)); + dc->SetPen(*wxBLACK_PEN); + } // VZ: unfortunately, the rectangle comes out a pixel smaller when this is // done under wxGTK - no idea why