changeset 900:1fc4f29feb2e cxx11

Merge from default branch
author Chris Cannam
date Tue, 03 Mar 2015 09:33:59 +0000
parents 2be9753651c8 (current diff) 78e041e45ff0 (diff)
children 0fe1f4407261
files view/Pane.cpp
diffstat 3 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/view/Pane.cpp	Mon Feb 09 10:31:07 2015 +0000
+++ b/view/Pane.cpp	Tue Mar 03 09:33:59 2015 +0000
@@ -2024,6 +2024,11 @@
 
     int smallThreshold = 10, bigThreshold = 80;
 
+    if (m_manager) {
+        smallThreshold = m_manager->scalePixelSize(smallThreshold);
+        bigThreshold = m_manager->scalePixelSize(bigThreshold);
+    }
+
 //    SVDEBUG << "Pane::updateDragMode: xdiff = " << xdiff << ", ydiff = "
 //              << ydiff << ", canMoveVertical = " << canMoveVertical << ", drag mode = " << m_dragMode << endl;
 
--- a/view/ViewManager.cpp	Mon Feb 09 10:31:07 2015 +0000
+++ b/view/ViewManager.cpp	Tue Mar 03 09:33:59 2015 +0000
@@ -720,3 +720,23 @@
     return dark;
 }
 
+int
+ViewManager::scalePixelSize(int pixels)
+{
+    static float ratio = 0.f;
+    if (ratio == 0.f) {
+        float baseEm;
+#ifdef Q_OS_MAC
+        baseEm = 17.f;
+#else
+        baseEm = 15.f;
+#endif
+        float em = QFontMetrics(QFont()).height();
+        ratio = em / baseEm;
+    }
+
+    int scaled = int(pixels * ratio + 0.5);
+    cerr << "scaledSize: " << pixels << " -> " << scaled << " at ratio " << ratio << endl;
+    if (pixels != 0 && scaled == 0) scaled = 1;
+    return scaled;
+}
--- a/view/ViewManager.h	Mon Feb 09 10:31:07 2015 +0000
+++ b/view/ViewManager.h	Tue Mar 03 09:33:59 2015 +0000
@@ -184,6 +184,13 @@
 
     void setMainModelSampleRate(int sr) { m_mainModelSampleRate = sr; }
 
+    /**
+     * Take a "design pixel" size and scale it for the actual
+     * display. This is relevant to hi-dpi systems that do not do
+     * pixel doubling (i.e. Windows and Linux rather than OS/X).
+     */
+    int scalePixelSize(int pixels);
+    
     enum OverlayMode {
         NoOverlays,
         GlobalOverlays,