summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-02-19 23:33:11 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-02-19 23:33:11 +0200
commit127c52e39a5455d574fcbffd75753b31897e4877 (patch)
tree16847e445836393906136dde4f5fb830034d6612 /src
parentMove scaleImage() in Utils (diff)
downloadnheko-127c52e39a5455d574fcbffd75753b31897e4877.tar.xz
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.
Diffstat (limited to 'src')
-rw-r--r--src/dialogs/PreviewUploadOverlay.cc20
-rw-r--r--src/timeline/widgets/ImageItem.cc5
2 files changed, 12 insertions, 13 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); } diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc
index 591d4e7b..08a057da 100644 --- a/src/timeline/widgets/ImageItem.cc +++ b/src/timeline/widgets/ImageItem.cc
@@ -150,8 +150,9 @@ ImageItem::mousePressEvent(QMouseEvent *event) if (textRegion_.contains(event->pos())) { openUrl(); } else { - auto image_dialog = new dialogs::ImageOverlay(image_, this); - image_dialog->show(); + image_dialog_ = + QSharedPointer<dialogs::ImageOverlay>(new dialogs::ImageOverlay(image_, this)); + image_dialog_->show(); } }