Skip to content

Commit

Permalink
Merge pull request #1329 from Ryex/fix/progress_dialog_centering
Browse files Browse the repository at this point in the history
fix(progress dialog): if there is a parent center on creation
  • Loading branch information
getchoo committed Jul 8, 2023
2 parents 3211b26 + 20c781b commit 67d473a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
23 changes: 15 additions & 8 deletions launcher/ui/dialogs/ProgressDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -95,7 +95,7 @@ ProgressDialog::~ProgressDialog()
delete ui;
}

void ProgressDialog::updateSize()
void ProgressDialog::updateSize(bool recenterParent)
{
QSize lastSize = this->size();
QPoint lastPos = this->pos();
Expand All @@ -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);
}

}
Expand Down
2 changes: 1 addition & 1 deletion launcher/ui/dialogs/ProgressDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class ProgressDialog : public QDialog
explicit ProgressDialog(QWidget *parent = 0);
~ProgressDialog();

void updateSize();
void updateSize(bool recenterParent = false);

int execWithTask(Task* task);
int execWithTask(std::unique_ptr<Task> &&task);
Expand Down

0 comments on commit 67d473a

Please sign in to comment.