File indexing completed on 2024-04-28 17:06:04
0001 /* 0002 SPDX-FileCopyrightText: 2008 Csaba Karai <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2008-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "krstyleproxy.h" 0009 0010 // QtGui 0011 #include <QPainter> 0012 #include <QPen> 0013 // QtWidgets 0014 #include <QStyleOptionViewItem> 0015 0016 #include <KConfigCore/KSharedConfig> 0017 0018 #include "../krglobal.h" 0019 0020 void KrStyleProxy::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const 0021 { 0022 if (element == QStyle::PE_FrameFocusRect) { 0023 if (const auto *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(option)) { 0024 QColor bg = fropt->backgroundColor; 0025 QPen oldPen = painter->pen(); 0026 QPen newPen; 0027 if (bg.isValid()) { 0028 int h, s, v; 0029 bg.getHsv(&h, &s, &v); 0030 if (v >= 128) 0031 newPen.setColor(Qt::black); 0032 else 0033 newPen.setColor(Qt::white); 0034 } else { 0035 newPen.setColor(option->palette.windowText().color()); 0036 } 0037 newPen.setWidth(0); 0038 newPen.setStyle(Qt::DotLine); 0039 painter->setPen(newPen); 0040 QRect focusRect = option->rect /*.adjusted(1, 1, -1, -1) */; 0041 painter->drawRect(focusRect.adjusted(0, 0, -1, -1)); // draw pen inclusive 0042 painter->setPen(oldPen); 0043 } 0044 } else 0045 QProxyStyle::drawPrimitive(element, option, painter, widget); 0046 } 0047 0048 int KrStyleProxy::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const 0049 { 0050 if (hint == QStyle::SH_ToolTip_WakeUpDelay) { 0051 KConfigGroup group(krConfig, "Look&Feel"); 0052 const int delay = group.readEntry("Panel Tooltip Delay", 1000); 0053 return delay < 0 ? INT_MAX : delay; 0054 } 0055 0056 // disable instant consecutive tooltips 0057 if (hint == QStyle::SH_ToolTip_FallAsleepDelay) { 0058 return 0; 0059 } 0060 0061 return QProxyStyle::styleHint(hint, option, widget, returnData); 0062 }