Scale down the preview image to fit in the application window
On macOS the modal has some extra space around the main content
that might make it unusable with a big enough image.
1 files changed, 9 insertions, 11 deletions
diff --git a/src/dialogs/PreviewUploadOverlay.cc b/src/dialogs/PreviewUploadOverlay.cc
index 5b4b9ffa..c535609f 100644
--- a/src/dialogs/PreviewUploadOverlay.cc
+++ b/src/dialogs/PreviewUploadOverlay.cc
@@ -61,10 +61,9 @@ PreviewUploadOverlay::PreviewUploadOverlay(QWidget *parent)
void
PreviewUploadOverlay::init()
{
- auto window = QApplication::activeWindow();
- auto winsize = window->frameGeometry().size();
- auto center = window->frameGeometry().center();
- auto img_size = image_.size();
+ auto window = QApplication::activeWindow();
+ auto winsize = window->frameGeometry().size();
+ auto center = window->frameGeometry().center();
fileName_.setText(QFileInfo{filePath_}.fileName());
@@ -87,13 +86,12 @@ PreviewUploadOverlay::init()
if (isImage_) {
infoLabel_.setAlignment(Qt::AlignCenter);
- // Scale image preview to the size of the current window if it is larger.
- if ((img_size.height() * img_size.width()) > (winsize.height() * winsize.width())) {
- infoLabel_.setPixmap(image_.scaled(winsize, Qt::KeepAspectRatio));
- } else {
- infoLabel_.setPixmap(image_);
- move(center.x() - (width() * 0.5), center.y() - (height() * 0.5));
- }
+ const auto maxWidth = winsize.width() * 0.8;
+ const auto maxHeight = winsize.height() * 0.8;
+
+ // Scale image preview to fit into the application window.
+ infoLabel_.setPixmap(utils::scaleDown<QPixmap>(maxWidth, maxHeight, image_));
+ move(center.x() - (width() * 0.5), center.y() - (height() * 0.5));
} else {
infoLabel_.setAlignment(Qt::AlignLeft);
}
|