X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fviewport.cpp;h=0c73ec494adfbc72257252c59ead85d609a6ad24;hb=20c99cfc69d3c7430817abd9a1f810698deb4a18;hp=83abb7b6cbd5273f699a204d2720e4404f6c00e2;hpb=f4ab4b5c657e5613caba82feaa81a8a400e4f331;p=pulseview.git diff --git a/pv/views/trace/viewport.cpp b/pv/views/trace/viewport.cpp index 83abb7b6..0c73ec49 100644 --- a/pv/views/trace/viewport.cpp +++ b/pv/views/trace/viewport.cpp @@ -30,6 +30,8 @@ #include #include +#include +#include #include @@ -67,8 +69,8 @@ shared_ptr Viewport::get_mouse_over_item(const QPoint &pt) void Viewport::item_hover(const shared_ptr &item, QPoint pos) { if (item && item->is_draggable(pos)) - setCursor(dynamic_pointer_cast(item) ? - Qt::SizeVerCursor : Qt::SizeHorCursor); + setCursor(dynamic_pointer_cast(item) ? + Qt::SizeHorCursor : Qt::SizeVerCursor); else unsetCursor(); } @@ -114,6 +116,9 @@ bool Viewport::touch_event(QTouchEvent *event) pinch_zoom_active_ = false; return false; } + if (event->device()->type() == QTouchDevice::TouchPad) { + return false; + } const QTouchEvent::TouchPoint &touchPoint0 = touchPoints.first(); const QTouchEvent::TouchPoint &touchPoint1 = touchPoints.last(); @@ -159,12 +164,12 @@ void Viewport::paintEvent(QPaintEvent*) &ViewItem::paint_back, &ViewItem::paint_mid, &ViewItem::paint_fore, nullptr}; - vector< shared_ptr > row_items(view_.list_by_type()); + vector< shared_ptr > row_items(view_.list_by_type()); assert(none_of(row_items.begin(), row_items.end(), - [](const shared_ptr &r) { return !r; })); + [](const shared_ptr &r) { return !r; })); stable_sort(row_items.begin(), row_items.end(), - [](const shared_ptr &a, const shared_ptr &b) { + [](const shared_ptr &a, const shared_ptr &b) { return a->drag_point(QRect()).y() < b->drag_point(QRect()).y(); }); const vector< shared_ptr > time_items(view_.time_items()); @@ -172,7 +177,11 @@ void Viewport::paintEvent(QPaintEvent*) [](const shared_ptr &t) { return !t; })); QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); + + // Disable antialiasing for high-DPI displays + bool use_antialiasing = + window()->windowHandle()->screen()->devicePixelRatio() < 2.0; + p.setRenderHint(QPainter::Antialiasing, use_antialiasing); for (LayerPaintFunc *paint_func = layer_paint_funcs; *paint_func; paint_func++) { @@ -181,7 +190,7 @@ void Viewport::paintEvent(QPaintEvent*) (t.get()->*(*paint_func))(p, time_pp); ViewItemPaintParams row_pp(rect(), view_.scale(), view_.offset()); - for (const shared_ptr& r : row_items) + for (const shared_ptr& r : row_items) (r.get()->*(*paint_func))(p, row_pp); }