Browse Source

UI: Add workaround for Qt tooltip stylesheet bug

derrod 2 years ago
parent
commit
d97950445e
2 changed files with 22 additions and 0 deletions
  1. 14 0
      UI/obs-proxy-style.cpp
  2. 8 0
      UI/obs-proxy-style.hpp

+ 14 - 0
UI/obs-proxy-style.cpp

@@ -90,3 +90,17 @@ int OBSProxyStyle::styleHint(StyleHint hint, const QStyleOption *option,
 
 
 	return QProxyStyle::styleHint(hint, option, widget, returnData);
 	return QProxyStyle::styleHint(hint, option, widget, returnData);
 }
 }
+
+#ifdef QT_TOOLTIP_WORKAROUND_NEEDED
+void OBSProxyStyle::polish(QWidget *widget)
+{
+	QProxyStyle::polish(widget);
+
+	// QTBUG-115511 workaround to make tooltip label QSS work again
+	if (widget->inherits("QTipLabel")) {
+		QPalette palette = widget->palette();
+		palette.setResolveMask(0);
+		widget->setPalette(palette);
+	}
+}
+#endif

+ 8 - 0
UI/obs-proxy-style.hpp

@@ -2,11 +2,19 @@
 
 
 #include <QProxyStyle>
 #include <QProxyStyle>
 
 
+#if defined(_WIN32) && QT_VERSION == QT_VERSION_CHECK(6, 5, 2)
+#define QT_TOOLTIP_WORKAROUND_NEEDED
+#endif
+
 class OBSProxyStyle : public QProxyStyle {
 class OBSProxyStyle : public QProxyStyle {
 public:
 public:
 	int styleHint(StyleHint hint, const QStyleOption *option,
 	int styleHint(StyleHint hint, const QStyleOption *option,
 		      const QWidget *widget,
 		      const QWidget *widget,
 		      QStyleHintReturn *returnData) const override;
 		      QStyleHintReturn *returnData) const override;
+
+#ifdef QT_TOOLTIP_WORKAROUND_NEEDED
+	void polish(QWidget *widget) override;
+#endif
 };
 };
 
 
 class OBSContextBarProxyStyle : public OBSProxyStyle {
 class OBSContextBarProxyStyle : public OBSProxyStyle {