mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-27 09:46:20 -04:00
UI: Add "Always On Top" option to file menu
This commit is contained in:
@@ -928,7 +928,20 @@ void OBSBasic::OBSInit()
|
||||
|
||||
connect(ui->preview, &OBSQTDisplay::DisplayCreated, addDisplay);
|
||||
|
||||
#ifdef _WIN32
|
||||
show();
|
||||
#endif
|
||||
|
||||
bool alwaysOnTop = config_get_bool(App()->GlobalConfig(), "BasicWindow",
|
||||
"AlwaysOnTop");
|
||||
if (alwaysOnTop) {
|
||||
SetAlwaysOnTop(this, true);
|
||||
ui->actionAlwaysOnTop->setChecked(true);
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
show();
|
||||
#endif
|
||||
|
||||
QList<int> defSizes;
|
||||
|
||||
@@ -1177,6 +1190,7 @@ OBSBasic::~OBSBasic()
|
||||
|
||||
QRect lastGeom = normalGeometry();
|
||||
QList<int> splitterSizes = ui->mainSplitter->sizes();
|
||||
bool alwaysOnTop = IsAlwaysOnTop(this);
|
||||
|
||||
config_set_int(App()->GlobalConfig(), "BasicWindow", "cx",
|
||||
lastGeom.width());
|
||||
@@ -1192,6 +1206,8 @@ OBSBasic::~OBSBasic()
|
||||
splitterSizes[1]);
|
||||
config_set_bool(App()->GlobalConfig(), "BasicWindow", "PreviewEnabled",
|
||||
previewEnabled);
|
||||
config_set_bool(App()->GlobalConfig(), "BasicWindow", "AlwaysOnTop",
|
||||
alwaysOnTop);
|
||||
config_save_safe(App()->GlobalConfig(), "tmp", nullptr);
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -3326,6 +3342,28 @@ void OBSBasic::on_previewDisabledLabel_customContextMenuRequested(
|
||||
UNUSED_PARAMETER(pos);
|
||||
}
|
||||
|
||||
void OBSBasic::on_actionAlwaysOnTop_triggered()
|
||||
{
|
||||
CloseDialogs();
|
||||
|
||||
/* Make sure all dialogs are safely and successfully closed before
|
||||
* switching the always on top mode due to the fact that windows all
|
||||
* have to be recreated, so queue the actual toggle to happen after
|
||||
* all events related to closing the dialogs have finished */
|
||||
QMetaObject::invokeMethod(this, "ToggleAlwaysOnTop",
|
||||
Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void OBSBasic::ToggleAlwaysOnTop()
|
||||
{
|
||||
bool isAlwaysOnTop = IsAlwaysOnTop(this);
|
||||
|
||||
ui->actionAlwaysOnTop->setChecked(!isAlwaysOnTop);
|
||||
SetAlwaysOnTop(this, !isAlwaysOnTop);
|
||||
|
||||
show();
|
||||
}
|
||||
|
||||
void OBSBasic::GetFPSCommon(uint32_t &num, uint32_t &den) const
|
||||
{
|
||||
const char *val = config_get_string(basicConfig, "Video", "FPSCommon");
|
||||
|
||||
Reference in New Issue
Block a user