]> git.cworth.org Git - apitrace/commitdiff
Cleanup the default size computation for the surface viewer.
authorZack Rusin <zack@kde.org>
Sat, 24 Sep 2011 00:25:47 +0000 (20:25 -0400)
committerZack Rusin <zack@kde.org>
Sat, 24 Sep 2011 17:44:07 +0000 (13:44 -0400)
gui/imageviewer.cpp
gui/imageviewer.h
gui/mainwindow.cpp

index fd5ec5d426b1a8aecac070bd81b75db85c906a77..4a11da5308d4c786d347cfc8472edc88e84115a7 100644 (file)
@@ -1,7 +1,9 @@
 #include "imageviewer.h"
 
+#include <QDesktopWidget>
 #include <QPainter>
 #include <QPixmap>
+#include <QScrollBar>
 
 ImageViewer::ImageViewer(QWidget *parent)
     : QDialog(parent)
@@ -24,8 +26,30 @@ ImageViewer::ImageViewer(QWidget *parent)
 
 void ImageViewer::setImage(const QImage &image)
 {
+    m_image = image;
     QPixmap px = QPixmap::fromImage(image);
     imageLabel->setPixmap(px);
+    updateGeometry();
+}
+
+QSize ImageViewer::sizeHint() const
+{
+    QSize size;
+
+    int vScrollWidth = scrollArea->verticalScrollBar() ?
+                scrollArea->verticalScrollBar()->width() : 0;
+    int hScrollHeight = scrollArea->horizontalScrollBar() ?
+                scrollArea->horizontalScrollBar()->height() : 0;
+    QSize optimalWindowSize(m_image.width() + vScrollWidth,
+                            m_image.height() + hScrollHeight);
+
+    QRect screenRect = QApplication::desktop()->availableGeometry();
+    const float maxPercentOfDesktopSpace = 0.8;
+    QSize maxAvailableSize(maxPercentOfDesktopSpace * screenRect.width(),
+                           maxPercentOfDesktopSpace * screenRect.height());
+
+    return QSize(qMin(optimalWindowSize.width(), maxAvailableSize.width()),
+                 qMin(optimalWindowSize.height(), maxAvailableSize.height()));
 }
 
 #include "imageviewer.moc"
index 05e8f458e94d53e11c02e0f393adc34eabbf91f0..16bc7f2ab0b5c0f6e0e10b6955b5cb5a26fc9549 100644 (file)
@@ -11,6 +11,10 @@ public:
     ImageViewer(QWidget *parent = 0);
 
     void setImage(const QImage &image);
+
+    QSize sizeHint() const;
+private:
+    QImage m_image;
 };
 
 
index 8d7af8a0a1f4a5c24041f7a511e0c1930f1c06b6..3ee8cc29aab6f68ce30e1c6eb121235b5e6c2cf1 100644 (file)
@@ -618,9 +618,6 @@ void MainWindow::showSelectedSurface()
     QImage img = var.value<QImage>();
     viewer->setImage(img);
 
-    QRect screenRect = QApplication::desktop()->availableGeometry();
-    viewer->resize(qMin(int(0.75 * screenRect.width()), img.width()) + 40,
-                   qMin(int(0.75 * screenRect.height()), img.height()) + 40);
     viewer->show();
     viewer->raise();
     viewer->activateWindow();