namespace view {
const int CursorHeader::Padding = 20;
+const int CursorHeader::BaselineOffset = 5;
int CursorHeader::calculateTextHeight()
{
QSize CursorHeader::sizeHint() const
{
- return QSize(0, _textHeight + Padding);
+ return QSize(0, _textHeight + Padding + BaselineOffset);
}
void CursorHeader::clear_selection()
// Draw the cursors
if (_view.cursors_shown()) {
- _view.cursors().draw_markers(p, rect(), prefix);
+ // The cursor labels are not drawn with the arrows exactly on the
+ // bottom line of the widget, because then the selection shadow
+ // would be clipped away.
+ const QRect r = rect().adjusted(0, 0, 0, -BaselineOffset);
+ _view.cursors().draw_markers(p, r, prefix);
}
}
if (!_dragging)
if (shared_ptr<TimeMarker> m = _grabbed_marker.lock()) {
Popup *const p = m->create_popup(&_view);
- p->set_position(mapToGlobal(QPoint(m->get_x(),
- height())), Popup::Bottom);
+ const QPoint arrpos(m->get_x(), height() - BaselineOffset);
+ p->set_position(mapToGlobal(arrpos), Popup::Bottom);
p->show();
}
static const int Padding;
+ /**
+ * The vertical offset, relative to the bottom line of the widget,
+ * where the arrows of the cursor labels end.
+ */
+ static const int BaselineOffset;
+
public:
CursorHeader(View &parent);