aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorRachel Powers <508861+Ryex@users.noreply.github.com>2023-07-08 02:28:37 -0700
committerRachel Powers <508861+Ryex@users.noreply.github.com>2023-07-08 02:28:37 -0700
commit20c781b23b0d2bd2be8bed0c015eb6c82312c29a (patch)
tree7532606cebff4c8445822598fe75e5c81ccf2045 /launcher
parent3211b265d75dc7e28b1608935396bce2ac4648dd (diff)
downloadPrismLauncher-20c781b23b0d2bd2be8bed0c015eb6c82312c29a.tar.gz
PrismLauncher-20c781b23b0d2bd2be8bed0c015eb6c82312c29a.tar.bz2
PrismLauncher-20c781b23b0d2bd2be8bed0c015eb6c82312c29a.zip
fix(progress dialog): if there is a parent center on creation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Diffstat (limited to 'launcher')
-rw-r--r--launcher/ui/dialogs/ProgressDialog.cpp23
-rw-r--r--launcher/ui/dialogs/ProgressDialog.h2
2 files changed, 16 insertions, 9 deletions
diff --git a/launcher/ui/dialogs/ProgressDialog.cpp b/launcher/ui/dialogs/ProgressDialog.cpp
index 3368a8c4..4243e291 100644
--- a/launcher/ui/dialogs/ProgressDialog.cpp
+++ b/launcher/ui/dialogs/ProgressDialog.cpp
@@ -67,9 +67,9 @@ ProgressDialog::ProgressDialog(QWidget* parent) : QDialog(parent), ui(new Ui::Pr
ui->taskProgressScrollArea->setHidden(true);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
setAttribute(Qt::WidgetAttribute::WA_QuitOnClose, true);
- setSkipButton(false);
changeProgress(0, 100);
- updateSize();
+ updateSize(true);
+ setSkipButton(false);
}
void ProgressDialog::setSkipButton(bool present, QString label)
@@ -95,7 +95,7 @@ ProgressDialog::~ProgressDialog()
delete ui;
}
-void ProgressDialog::updateSize()
+void ProgressDialog::updateSize(bool recenterParent)
{
QSize lastSize = this->size();
QPoint lastPos = this->pos();
@@ -112,13 +112,20 @@ void ProgressDialog::updateSize()
adjustSize();
QSize newSize = this->size();
- // if the current window is too small
- if ((lastSize != newSize) && (lastSize.height() < newSize.height()))
+ // if the current window is a different size
+ auto parent = this->parentWidget();
+ if (recenterParent && parent) {
+ auto newX = std::max(0, parent->x() + ((parent->width() - newSize.width()) / 2));
+ auto newY = std::max(0, parent->y() + ((parent->height() - newSize.height()) / 2));
+ this->move(newX, newY);
+ }
+ else if (lastSize != newSize)
{
- QSize sizeDiff = lastSize - newSize; // last size was smaller, the results should be negative
// center on old position after resize
- QPoint newPos(lastPos.x() + (sizeDiff.width() / 2), lastPos.y() + (sizeDiff.height() / 2));
- this->move(newPos);
+ QSize sizeDiff = lastSize - newSize; // last size was smaller, the results should be negative
+ auto newX = std::max(0, lastPos.x() + (sizeDiff.width() / 2));
+ auto newY = std::max(0, lastPos.y() + (sizeDiff.height() / 2));
+ this->move(newX, newY);
}
}
diff --git a/launcher/ui/dialogs/ProgressDialog.h b/launcher/ui/dialogs/ProgressDialog.h
index fc9a0fbc..f062be08 100644
--- a/launcher/ui/dialogs/ProgressDialog.h
+++ b/launcher/ui/dialogs/ProgressDialog.h
@@ -62,7 +62,7 @@ public:
explicit ProgressDialog(QWidget *parent = 0);
~ProgressDialog();
- void updateSize();
+ void updateSize(bool recenterParent = false);
int execWithTask(Task* task);
int execWithTask(std::unique_ptr<Task> &&task);