فهرست منبع

UI: Add right-click context menu to projector

For now, just has the option to close the projector window.
jp9000 10 سال پیش
والد
کامیت
661acfe043
2فایلهای تغییر یافته به همراه18 افزوده شده و 0 حذف شده
  1. 14 0
      obs/window-projector.cpp
  2. 4 0
      obs/window-projector.hpp

+ 14 - 0
obs/window-projector.cpp

@@ -1,8 +1,11 @@
 #include <QAction>
+#include <QMouseEvent>
+#include <QMenu>
 #include "window-projector.hpp"
 #include "display-helpers.hpp"
 #include "qt-wrappers.hpp"
 #include "platform.hpp"
+#include "obs-app.hpp"
 
 OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_)
 	: OBSQTDisplay                 (widget,
@@ -97,6 +100,17 @@ void OBSProjector::OBSSourceRemoved(void *data, calldata_t *params)
 	UNUSED_PARAMETER(params);
 }
 
+void OBSProjector::mousePressEvent(QMouseEvent *event)
+{
+	OBSQTDisplay::mousePressEvent(event);
+
+	if (event->button() == Qt::RightButton) {
+		QMenu popup(this);
+		popup.addAction(QTStr("Close"), this, SLOT(EscapeTriggered()));
+		popup.exec(QCursor::pos());
+	}
+}
+
 void OBSProjector::EscapeTriggered()
 {
 	deleteLater();

+ 4 - 0
obs/window-projector.hpp

@@ -3,6 +3,8 @@
 #include <obs.hpp>
 #include "qt-display.hpp"
 
+class QMouseEvent;
+
 class OBSProjector : public OBSQTDisplay {
 	Q_OBJECT
 
@@ -14,6 +16,8 @@ private:
 	static void OBSRender(void *data, uint32_t cx, uint32_t cy);
 	static void OBSSourceRemoved(void *data, calldata_t *params);
 
+	void mousePressEvent(QMouseEvent *event) override;
+
 private slots:
 	void EscapeTriggered();