1
0
Эх сурвалжийг харах

UI: Fix source item widget color height

The background color of the source tree item widgets wouldn't be
rendered properly.
cg2121 3 жил өмнө
parent
commit
adba393ca8

+ 7 - 1
UI/data/themes/Acri.qss

@@ -189,11 +189,17 @@ SourceTree {
     padding: 3px;
 }
 
+SourceTreeItem,
+QMenu::item,
+SceneTree::item {
+    padding: 6px;
+}
+
+SourceTreeItem,
 QMenu::item,
 SceneTree::item,
 SourceTree::item {
     border-radius: 4px;
-    padding: 6px;
     color: palette(text);
 	border: 0px solid transparent;
 }

+ 7 - 1
UI/data/themes/Grey.qss

@@ -189,11 +189,17 @@ SourceTree {
     padding: 3px;
 }
 
+SourceTreeItem,
+QMenu::item,
+SceneTree::item {
+    padding: 6px;
+}
+
+SourceTreeItem,
 QMenu::item,
 SceneTree::item,
 SourceTree::item {
     border-radius: 4px;
-    padding: 6px;
     color: palette(text);
 	border: 0px solid transparent;
 }

+ 7 - 1
UI/data/themes/Light.qss

@@ -189,11 +189,17 @@ SourceTree {
     padding: 3px;
 }
 
+SourceTreeItem,
+QMenu::item,
+SceneTree::item {
+    padding: 6px;
+}
+
+SourceTreeItem,
 QMenu::item,
 SceneTree::item,
 SourceTree::item {
     border-radius: 4px;
-    padding: 6px;
     color: palette(text);
 	border: 0px solid transparent;
 }

+ 7 - 1
UI/data/themes/Rachni.qss

@@ -191,11 +191,17 @@ SourceTree {
     padding: 3px;
 }
 
+SourceTreeItem,
+QMenu::item,
+SceneTree::item {
+    padding: 6px;
+}
+
+SourceTreeItem,
 QMenu::item,
 SceneTree::item,
 SourceTree::item {
     border-radius: 4px;
-    padding: 6px;
     color: palette(text);
 	border: 0px solid transparent;
 }

+ 7 - 1
UI/data/themes/Yami.qss

@@ -189,11 +189,17 @@ SourceTree {
     padding: 3px;
 }
 
+SourceTreeItem,
+QMenu::item,
+SceneTree::item {
+    padding: 6px;
+}
+
+SourceTreeItem,
 QMenu::item,
 SceneTree::item,
 SourceTree::item {
     border-radius: 4px;
-    padding: 6px;
     color: palette(text);
 	border: 0px solid transparent;
 }

+ 16 - 0
UI/source-tree.cpp

@@ -1088,6 +1088,8 @@ SourceTree::SourceTree(QWidget *parent_) : QListView(parent_)
 	connect(App(), &OBSApp::StyleChanged, this,
 		&SourceTree::UpdateNoSourcesMessage);
 	connect(App(), &OBSApp::StyleChanged, this, &SourceTree::UpdateIcons);
+
+	setItemDelegate(new SourceTreeDelegate(this));
 }
 
 void SourceTree::UpdateIcons()
@@ -1743,3 +1745,17 @@ void SourceTree::paintEvent(QPaintEvent *event)
 		QListView::paintEvent(event);
 	}
 }
+
+SourceTreeDelegate::SourceTreeDelegate(QObject *parent)
+	: QStyledItemDelegate(parent)
+{
+}
+
+QSize SourceTreeDelegate::sizeHint(const QStyleOptionViewItem &,
+				   const QModelIndex &index) const
+{
+	SourceTree *tree = qobject_cast<SourceTree *>(parent());
+	QWidget *item = tree->indexWidget(index);
+
+	return (QSize(item->width(), item->height()));
+}

+ 11 - 1
UI/source-tree.hpp

@@ -8,6 +8,7 @@
 #include <QStaticText>
 #include <QSvgRenderer>
 #include <QAbstractListModel>
+#include <QStyledItemDelegate>
 #include <obs.hpp>
 #include <obs-frontend-api.h>
 
@@ -25,7 +26,7 @@ class SourceTreeSubItemCheckBox : public QCheckBox {
 	Q_OBJECT
 };
 
-class SourceTreeItem : public QWidget {
+class SourceTreeItem : public QFrame {
 	Q_OBJECT
 
 	friend class SourceTree;
@@ -218,3 +219,12 @@ protected:
 	selectionChanged(const QItemSelection &selected,
 			 const QItemSelection &deselected) override;
 };
+
+class SourceTreeDelegate : public QStyledItemDelegate {
+	Q_OBJECT
+
+public:
+	SourceTreeDelegate(QObject *parent);
+	virtual QSize sizeHint(const QStyleOptionViewItem &option,
+			       const QModelIndex &index) const override;
+};