Browse Source

Basic UI: Signal resize of properties view

If the properties view changed in the properties window, the viewport of
the properties would not trigger a resize because the size of the window
itself does not change.  This creates a signal that allows the parent to
know whether or not to update a viewport, if any.
jp9000 11 years ago
parent
commit
354614a7e8

+ 6 - 0
obs/properties-view.cpp

@@ -92,6 +92,12 @@ OBSPropertiesView::OBSPropertiesView(OBSData settings_,
 	RefreshProperties();
 }
 
+void OBSPropertiesView::resizeEvent(QResizeEvent *event)
+{
+	emit PropertiesResized();
+	UNUSED_PARAMETER(event);
+}
+
 QWidget *OBSPropertiesView::NewWidget(obs_property_t prop, QWidget *widget,
 		const char *signal)
 {

+ 5 - 0
obs/properties-view.hpp

@@ -74,9 +74,14 @@ private:
 
 	void AddProperty(obs_property_t property, QFormLayout *layout);
 
+	void resizeEvent(QResizeEvent *event) override;
+
 public slots:
 	void RefreshProperties();
 
+signals:
+	void PropertiesResized();
+
 public:
 	OBSPropertiesView(OBSData settings,
 			obs_properties_t properties,

+ 10 - 0
obs/window-basic-properties.cpp

@@ -58,6 +58,9 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
 	view->setMinimumHeight(150);
 	view->show();
 
+	connect(view, SIGNAL(PropertiesResized()),
+			this, SLOT(OnPropertiesResized()));
+
 	connect(windowHandle(), &QWindow::screenChanged, [this]() {
 		if (resizeTimer)
 			killTimer(resizeTimer);
@@ -107,6 +110,13 @@ void OBSBasicProperties::DrawPreview(void *data, uint32_t cx, uint32_t cy)
 	gs_viewport_pop();
 }
 
+void OBSBasicProperties::OnPropertiesResized()
+{
+	if (resizeTimer)
+		killTimer(resizeTimer);
+	resizeTimer = startTimer(100);
+}
+
 void OBSBasicProperties::resizeEvent(QResizeEvent *event)
 {
 	if (isVisible()) {

+ 3 - 0
obs/window-basic-properties.hpp

@@ -44,6 +44,9 @@ private:
 	static void SourceRemoved(void *data, calldata_t params);
 	static void DrawPreview(void *data, uint32_t cx, uint32_t cy);
 
+private slots:
+	void OnPropertiesResized();
+
 public:
 	OBSBasicProperties(QWidget *parent, OBSSource source_);