From e6fa25ffd902f5784bcd2d4c7bdfa50d6ef23423 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Wed, 2 Jul 2008 17:42:20 +0200 Subject: [PATCH] usability++ (drag mousecursor, tooltip, limited scrolling) --- src/qtui/topiclabel.cpp | 16 ++++++++++++++-- src/qtui/topiclabel.h | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/qtui/topiclabel.cpp b/src/qtui/topiclabel.cpp index ea84b1e0..ec9fc4eb 100644 --- a/src/qtui/topiclabel.cpp +++ b/src/qtui/topiclabel.cpp @@ -37,8 +37,11 @@ TopicLabel::TopicLabel(QWidget *parent) : QFrame(parent), offset(0), dragStartX(0), + textWidth(0), dragMode(false) { + setToolTip(tr("Drag to scroll the topic!")); + setCursor(Qt::OpenHandCursor); } void TopicLabel::paintEvent(QPaintEvent *event) { @@ -63,6 +66,7 @@ void TopicLabel::paintEvent(QPaintEvent *event) { painter.drawText(drawRect, Qt::AlignLeft|Qt::AlignVCenter, textPart, &brect); drawRect.setLeft(brect.right()); } + textWidth = brect.right(); #endif } @@ -88,7 +92,6 @@ void TopicLabel::setText(const QString &text) { // setFixedHeight(height); #endif // show topic in tooltip - setToolTip(_text); } @@ -97,7 +100,14 @@ void TopicLabel::mouseMoveEvent(QMouseEvent *event) { return; event->accept(); - offset = event->pos().x() - dragStartX; + int newOffset = event->pos().x() - dragStartX; + if(newOffset > 0) + offset = 0; + else if(width() < textWidth || offset < newOffset) + offset = newOffset; +// qDebug() << offset << (width() - textWidth) << width() << textWidth; +// if(offset < width() - textWidth) +// offset = width() - textWidth; update(); } @@ -105,6 +115,7 @@ void TopicLabel::mousePressEvent(QMouseEvent *event) { event->accept(); dragMode = true; dragStartX = event->pos().x() - offset; + setCursor(Qt::ClosedHandCursor); } void TopicLabel::mouseReleaseEvent(QMouseEvent *event) { @@ -114,6 +125,7 @@ void TopicLabel::mouseReleaseEvent(QMouseEvent *event) { offset = 0; update(); } + setCursor(Qt::OpenHandCursor); } void TopicLabel::mouseDoubleClickEvent(QMouseEvent *event) { diff --git a/src/qtui/topiclabel.h b/src/qtui/topiclabel.h index 756c35a5..af5abc6f 100644 --- a/src/qtui/topiclabel.h +++ b/src/qtui/topiclabel.h @@ -51,6 +51,7 @@ private: int offset; int dragStartX; + int textWidth; bool dragMode; QList textPartOffset; // needed for location url positions -- 2.20.1