Mercurial > hg > svgui
comparison widgets/Panner.cpp @ 1324:13d9b422f7fe zoom
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 17 Sep 2018 13:51:31 +0100 |
parents | cb51d061cc25 |
children | d39db4673676 |
comparison
equal
deleted
inserted
replaced
1183:57d192e26331 | 1324:13d9b422f7fe |
---|---|
17 | 17 |
18 #include <QMouseEvent> | 18 #include <QMouseEvent> |
19 #include <QPaintEvent> | 19 #include <QPaintEvent> |
20 #include <QWheelEvent> | 20 #include <QWheelEvent> |
21 #include <QPainter> | 21 #include <QPainter> |
22 | |
23 #include "WidgetScale.h" | |
22 | 24 |
23 #include <iostream> | 25 #include <iostream> |
24 #include <cmath> | 26 #include <cmath> |
25 | 27 |
26 Panner::Panner(QWidget *parent) : | 28 Panner::Panner(QWidget *parent) : |
60 } | 62 } |
61 | 63 |
62 void | 64 void |
63 Panner::scroll(bool up) | 65 Panner::scroll(bool up) |
64 { | 66 { |
67 scroll(up, 1); | |
68 } | |
69 | |
70 void | |
71 Panner::scroll(bool up, int count) | |
72 { | |
65 float unit = m_scrollUnit; | 73 float unit = m_scrollUnit; |
66 if (unit == 0.f) { | 74 if (unit == 0.f) { |
67 unit = float(m_rectHeight) / (6 * float(height())); | 75 unit = float(m_rectHeight) / (6 * float(height())); |
68 if (unit < 0.01f) unit = 0.01f; | 76 if (unit < 0.01f) unit = 0.01f; |
69 } | 77 } |
70 | 78 |
71 if (!up) { | 79 if (!up) { |
72 m_rectY += unit; | 80 m_rectY += unit * float(count); |
73 } else { | 81 } else { |
74 m_rectY -= unit; | 82 m_rectY -= unit * float(count); |
75 } | 83 } |
76 | 84 |
77 normalise(); | 85 normalise(); |
78 emitAndUpdate(); | 86 emitAndUpdate(); |
79 } | 87 } |
130 } | 138 } |
131 | 139 |
132 void | 140 void |
133 Panner::wheelEvent(QWheelEvent *e) | 141 Panner::wheelEvent(QWheelEvent *e) |
134 { | 142 { |
135 scroll(e->delta() > 0); | 143 int delta = m_wheelCounter.count(e); |
144 scroll(delta > 0, abs(delta)); | |
136 } | 145 } |
137 | 146 |
138 void | 147 void |
139 Panner::enterEvent(QEvent *) | 148 Panner::enterEvent(QEvent *) |
140 { | 149 { |
154 paint.setRenderHint(QPainter::Antialiasing, false); | 163 paint.setRenderHint(QPainter::Antialiasing, false); |
155 | 164 |
156 QColor bg(palette().background().color()); | 165 QColor bg(palette().background().color()); |
157 bg.setAlpha(m_backgroundAlpha); | 166 bg.setAlpha(m_backgroundAlpha); |
158 | 167 |
159 paint.setPen(palette().dark().color()); | 168 int penWidth = WidgetScale::scalePixelSize(1); |
169 if (penWidth < 1) penWidth = 1; | |
170 paint.setPen(QPen(palette().dark().color(), penWidth)); | |
171 | |
160 paint.setBrush(bg); | 172 paint.setBrush(bg); |
161 paint.drawRect(0, 0, width()-1, height()-1); | 173 paint.drawRect(penWidth/2, penWidth/2, |
174 width()-penWidth/2-1, height()-penWidth/2-1); | |
162 | 175 |
163 QColor hl(m_thumbColour); | 176 QColor hl(m_thumbColour); |
164 hl.setAlpha(m_thumbAlpha); | 177 hl.setAlpha(m_thumbAlpha); |
165 | 178 |
166 paint.setBrush(hl); | 179 paint.setBrush(hl); |