UI: Disable downscale filter setting for same resolutions

Disables the downscale filter dropdown menu when base and output
resolution are the same.
master
gxalpha 2021-10-12 01:22:04 +02:00 committed by Matt Gajownik
parent 6a5a5b4538
commit 90f1ebf4aa
2 changed files with 38 additions and 23 deletions

View File

@ -967,6 +967,7 @@ Basic.Settings.Video.Adapter="Video Adapter"
Basic.Settings.Video.BaseResolution="Base (Canvas) Resolution"
Basic.Settings.Video.ScaledResolution="Output (Scaled) Resolution"
Basic.Settings.Video.DownscaleFilter="Downscale Filter"
Basic.Settings.Video.DownscaleFilter.Unavailable="[Resolutions match, no downscaling required]"
Basic.Settings.Video.DisableAeroWindows="Disable Aero (Windows only)"
Basic.Settings.Video.FPS="FPS"
Basic.Settings.Video.FPSCommon="Common FPS Values"

View File

@ -1555,30 +1555,42 @@ void OBSBasicSettings::ResetDownscales(uint32_t cx, uint32_t cy,
void OBSBasicSettings::LoadDownscaleFilters()
{
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bilinear"),
QT_UTF8("bilinear"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Area"),
QT_UTF8("area"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bicubic"),
QT_UTF8("bicubic"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"),
QT_UTF8("lanczos"));
QString downscaleFilter = ui->downscaleFilter->currentData().toString();
if (downscaleFilter.isEmpty())
downscaleFilter =
config_get_string(main->Config(), "Video", "ScaleType");
const char *scaleType =
config_get_string(main->Config(), "Video", "ScaleType");
ui->downscaleFilter->clear();
if (ui->baseResolution->currentText() ==
ui->outputResolution->currentText()) {
ui->downscaleFilter->setEnabled(false);
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Unavailable"),
downscaleFilter);
} else {
ui->downscaleFilter->setEnabled(true);
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bilinear"),
QT_UTF8("bilinear"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Area"),
QT_UTF8("area"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bicubic"),
QT_UTF8("bicubic"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"),
QT_UTF8("lanczos"));
if (astrcmpi(scaleType, "bilinear") == 0)
ui->downscaleFilter->setCurrentIndex(0);
else if (astrcmpi(scaleType, "lanczos") == 0)
ui->downscaleFilter->setCurrentIndex(3);
else if (astrcmpi(scaleType, "area") == 0)
ui->downscaleFilter->setCurrentIndex(1);
else
ui->downscaleFilter->setCurrentIndex(2);
if (downscaleFilter == "bilinear")
ui->downscaleFilter->setCurrentIndex(0);
else if (downscaleFilter == "lanczos")
ui->downscaleFilter->setCurrentIndex(3);
else if (downscaleFilter == "area")
ui->downscaleFilter->setCurrentIndex(1);
else
ui->downscaleFilter->setCurrentIndex(2);
}
}
void OBSBasicSettings::LoadResolutionLists()
@ -4085,8 +4097,10 @@ void OBSBasicSettings::on_filenameFormatting_textEdited(const QString &text)
void OBSBasicSettings::on_outputResolution_editTextChanged(const QString &text)
{
if (!loading)
if (!loading) {
RecalcOutputResPixels(QT_TO_UTF8(text));
LoadDownscaleFilters();
}
}
void OBSBasicSettings::on_baseResolution_editTextChanged(const QString &text)