UI: Fix always on top w/ projectors on Linux

Apparently, on Linux, you cannot update the window flags while it is
still open, so just close the projectors and reopen them again when the
setting changes.
This commit is contained in:
Clayton Groeneveld 2020-08-23 05:12:46 -05:00 committed by jp9000
parent 27f913843a
commit 227f80ac48
3 changed files with 14 additions and 0 deletions

View file

@ -8269,6 +8269,15 @@ void OBSBasic::UpdateProjectorAlwaysOnTop(bool top)
SetAlwaysOnTop(projectors[i], top);
}
void OBSBasic::ResetProjectors()
{
obs_data_array_t *savedProjectorList = SaveProjectors();
ClearProjectors();
LoadSavedProjectors(savedProjectorList);
OpenSavedProjectors();
obs_data_array_release(savedProjectorList);
}
void OBSBasic::on_sourcePropertiesButton_clicked()
{
on_actionSourceProperties_triggered();

View file

@ -531,6 +531,7 @@ private:
void UpdateProjectorHideCursor();
void UpdateProjectorAlwaysOnTop(bool top);
void ResetProjectors();
QPointer<QObject> screenshotData;

View file

@ -2958,8 +2958,12 @@ void OBSBasicSettings::SaveGeneralSettings()
config_set_bool(GetGlobalConfig(), "BasicWindow",
"ProjectorAlwaysOnTop",
ui->projectorAlwaysOnTop->isChecked());
#if defined(_WIN32) || defined(__APPLE__)
main->UpdateProjectorAlwaysOnTop(
ui->projectorAlwaysOnTop->isChecked());
#else
main->ResetProjectors();
#endif
}
if (WidgetChanged(ui->recordWhenStreaming))