Mercurial > hg > svgui
diff layer/TimeValueLayer.cpp @ 631:f69e08be3379
Make mouseover highlights a bit more likely to appear and easier to see
author | Chris Cannam |
---|---|
date | Tue, 16 Apr 2013 14:25:22 +0100 |
parents | c3593bb2de6b |
children | 9d8f6552014d |
line wrap: on
line diff
--- a/layer/TimeValueLayer.cpp Tue Apr 16 10:06:10 2013 +0100 +++ b/layer/TimeValueLayer.cpp Tue Apr 16 14:25:22 2013 +0100 @@ -517,6 +517,8 @@ if (prevPoints.empty()) { usePoints = nextPoints; + } else if (nextPoints.empty()) { + // stick with prevPoints } else if (long(prevPoints.begin()->frame) < v->getStartFrame() && !(nextPoints.begin()->frame > v->getEndFrame())) { usePoints = nextPoints; @@ -529,7 +531,7 @@ int fuzz = 2; int px = v->getXForFrame(usePoints.begin()->frame); if ((px > x && px - x > fuzz) || - (px < x && x - px > fuzz + 1)) { + (px < x && x - px > fuzz + 3)) { usePoints.clear(); } } @@ -970,7 +972,7 @@ if (m_plotStyle != PlotSegmentation) { textY = y - paint.fontMetrics().height() - + paint.fontMetrics().ascent(); + + paint.fontMetrics().ascent() - 1; if (textY < paint.fontMetrics().ascent() + 1) { textY = paint.fontMetrics().ascent() + 1; } @@ -1029,30 +1031,36 @@ } } + bool illuminate = false; + if (illuminateFrame == p.frame) { - //!!! aside from the problem of choosing a colour, it'd be - //better to save the highlighted rects and draw them at - //the end perhaps - - //!!! not equipped to illuminate the right section in line - //or curve mode + // not equipped to illuminate the right section in line + // or curve mode if (m_plotStyle != PlotCurve && m_plotStyle != PlotDiscreteCurves && m_plotStyle != PlotLines) { - paint.setPen(getForegroundQColor(v)); - } - } + illuminate = true; + } + } if (m_plotStyle != PlotLines && m_plotStyle != PlotCurve && m_plotStyle != PlotDiscreteCurves && m_plotStyle != PlotSegmentation) { + if (illuminate) { + paint.save(); + paint.setPen(getForegroundQColor(v)); + paint.setBrush(getForegroundQColor(v)); + } if (m_plotStyle != PlotStems || w > 1) { paint.drawRect(x, y - 1, w, 2); } + if (illuminate) { + paint.restore(); + } } if (m_plotStyle == PlotConnectedPoints || @@ -1125,7 +1133,7 @@ paint.setPen(QPen(getForegroundQColor(v), 2)); - if (illuminateFrame != p.frame) { + if (!illuminate) { if (!m_drawSegmentDivisions || nx < x + 5 || x >= v->width() - 1) { @@ -1141,13 +1149,14 @@ if (label == "" && (m_plotStyle == PlotPoints || - m_plotStyle == PlotSegmentation)) { + m_plotStyle == PlotSegmentation || + m_plotStyle == PlotConnectedPoints)) { label = QString("%1").arg(p.value); italic = true; } if (label != "") { - if (!haveNext || nx > x + 6 + paint.fontMetrics().width(p.label)) { + if (!haveNext || nx > x + 6 + paint.fontMetrics().width(label)) { v->drawVisibleText(paint, x + 5, textY, label, italic ? View::OutlinedItalicText :