fix: don't attempt to scale windows opted out of scaling (#5400)

This commit is contained in:
nerix
2024-05-18 12:34:36 +02:00
committed by GitHub
parent 614a1c469f
commit 3ed1c0f7a4
4 changed files with 24 additions and 4 deletions
+20 -2
View File
@@ -931,9 +931,27 @@ void BaseWindow::updateScale()
this->setScale(scale);
for (auto *child : this->findChildren<BaseWidget *>())
BaseWindow::applyScaleRecursive(this, scale);
}
// NOLINTNEXTLINE(misc-no-recursion)
void BaseWindow::applyScaleRecursive(QObject *root, float scale)
{
for (QObject *obj : root->children())
{
child->setScale(scale);
auto *base = dynamic_cast<BaseWidget *>(obj);
if (base)
{
auto *window = dynamic_cast<BaseWindow *>(obj);
if (window)
{
// stop here, the window will get the event as well (via uiScale)
continue;
}
base->setScale(scale);
}
applyScaleRecursive(obj, scale);
}
}
+2
View File
@@ -131,6 +131,8 @@ private:
void drawCustomWindowFrame(QPainter &painter);
void onFocusLost();
static void applyScaleRecursive(QObject *root, float scale);
bool handleSHOWWINDOW(MSG *msg);
bool handleSIZE(MSG *msg);
bool handleMOVE(MSG *msg);
+1 -1
View File
@@ -196,7 +196,7 @@ void SettingsDialog::filterElements(const QString &text)
auto *item = this->ui_.tabContainer->itemAt(i);
if (auto *x = dynamic_cast<QSpacerItem *>(item); x)
{
x->changeSize(10, shouldShowSpace ? int(16 * this->scale()) : 0);
x->changeSize(10, shouldShowSpace ? 16 : 0);
shouldShowSpace = false;
}
else if (item->widget())