From e9576e85597dea2f2ac1ecf5d871707f38b56daa Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 12 Dec 2019 08:37:11 +0530 Subject: [PATCH] Fix rendering of checkbox outlines in dark mode --- .../progress_indicator/QProgressIndicator.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp index 269bf71974..05cec87e57 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp @@ -214,6 +214,23 @@ class CalibreStyle: public QProxyStyle { } } break; + case PE_IndicatorCheckBox: + // Fix color used to draw checkbox outline in dark mode + if (option->palette.color(QPalette::Window).valueF() < 0.45) { + baseStyle()->drawPrimitive(element, option, painter, widget); + painter->save(); + painter->translate(0.5, 0.5); + QRect rect = option->rect; + rect = rect.adjusted(0, 0, -1, -1); + + painter->setPen(QPen(option->palette.color(QPalette::WindowText))); + if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange) + painter->setPen(QPen(Qt::white)); + painter->drawRect(rect); + painter->restore(); + return; + } + break; case PE_PanelItemViewItem: // Highlight the current, selected item with a different background in an item view if the highlight current item property is set if (option->state & QStyle::State_HasFocus && (vopt = qstyleoption_cast(option)) && widget && widget->property("highlight_current_item").toBool()) {