mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
UI: Delete projector when monitor is disconnected
This commit is contained in:
parent
b9de258c16
commit
846c3d5acc
@ -63,6 +63,8 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
|
||||
};
|
||||
|
||||
connect(this, &OBSQTDisplay::DisplayCreated, addDrawCallback);
|
||||
connect(App(), &QGuiApplication::screenRemoved, this,
|
||||
&OBSProjector::ScreenRemoved);
|
||||
|
||||
if (type == ProjectorType::Multiview) {
|
||||
obs_enter_graphics();
|
||||
@ -168,12 +170,14 @@ OBSProjector::~OBSProjector()
|
||||
multiviewProjectors.removeAll(this);
|
||||
|
||||
App()->DecrementSleepInhibition();
|
||||
|
||||
screen = nullptr;
|
||||
}
|
||||
|
||||
void OBSProjector::SetMonitor(int monitor)
|
||||
{
|
||||
savedMonitor = monitor;
|
||||
QScreen *screen = QGuiApplication::screens()[monitor];
|
||||
screen = QGuiApplication::screens()[monitor];
|
||||
setGeometry(screen->geometry());
|
||||
showFullScreen();
|
||||
SetHideCursor();
|
||||
@ -1078,6 +1082,7 @@ void OBSProjector::OpenWindowedProjector()
|
||||
savedMonitor = -1;
|
||||
|
||||
UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source)));
|
||||
screen = nullptr;
|
||||
}
|
||||
|
||||
void OBSProjector::ResizeToContent()
|
||||
@ -1135,3 +1140,12 @@ void OBSProjector::SetIsAlwaysOnTop(bool isAlwaysOnTop, bool isOverridden)
|
||||
|
||||
SetAlwaysOnTop(this, isAlwaysOnTop);
|
||||
}
|
||||
|
||||
void OBSProjector::ScreenRemoved(QScreen *screen_)
|
||||
{
|
||||
if (GetMonitor() < 0 || !screen)
|
||||
return;
|
||||
|
||||
if (screen == screen_)
|
||||
EscapeTriggered();
|
||||
}
|
||||
|
@ -77,12 +77,15 @@ private:
|
||||
QRect prevGeometry;
|
||||
void SetMonitor(int monitor);
|
||||
|
||||
QScreen *screen = nullptr;
|
||||
|
||||
private slots:
|
||||
void EscapeTriggered();
|
||||
void OpenFullScreenProjector();
|
||||
void ResizeToContent();
|
||||
void OpenWindowedProjector();
|
||||
void AlwaysOnTopToggled(bool alwaysOnTop);
|
||||
void ScreenRemoved(QScreen *screen_);
|
||||
|
||||
public:
|
||||
OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
|
||||
|
Loading…
Reference in New Issue
Block a user