link clicking and hovering in message body now works!
This commit is contained in:
parent
eac87e713f
commit
7ba94e9deb
4 changed files with 105 additions and 120 deletions
|
@ -51,7 +51,8 @@ FeedView::FeedView(QWidget* parent):
|
|||
progress(),
|
||||
dividerFont(),
|
||||
dividerMetrics(dividerFont),
|
||||
mousePressed(false)
|
||||
mousePressed(false),
|
||||
anchorHovered(false)
|
||||
{
|
||||
horizontalScrollBar()->setRange(0, 0);
|
||||
verticalScrollBar()->setSingleStep(approximateSingleMessageHeight);
|
||||
|
@ -408,6 +409,18 @@ void FeedView::verticalScrollbarValueChanged(int value)
|
|||
QAbstractItemView::verticalScrollbarValueChanged(vo);
|
||||
}
|
||||
|
||||
void FeedView::setAnchorHovered(bool hovered)
|
||||
{
|
||||
if (anchorHovered != hovered) {
|
||||
anchorHovered = hovered;
|
||||
if (anchorHovered) {
|
||||
setCursor(Qt::PointingHandCursor);
|
||||
} else {
|
||||
setCursor(Qt::ArrowCursor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FeedView::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if (!isVisible()) {
|
||||
|
@ -418,6 +431,22 @@ void FeedView::mouseMoveEvent(QMouseEvent* event)
|
|||
//qDebug() << event;
|
||||
|
||||
QAbstractItemView::mouseMoveEvent(event);
|
||||
|
||||
if (specialDelegate) {
|
||||
QPoint point = event->localPos().toPoint();
|
||||
QModelIndex index = indexAt(point);
|
||||
if (index.isValid()) {
|
||||
QRect rect = visualRect(index);
|
||||
MessageDelegate* del = static_cast<MessageDelegate*>(itemDelegate());
|
||||
if (rect.contains(point)) {
|
||||
setAnchorHovered(del->isAnchorHovered(point, index, rect));
|
||||
} else {
|
||||
setAnchorHovered(false);
|
||||
}
|
||||
} else {
|
||||
setAnchorHovered(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FeedView::mousePressEvent(QMouseEvent* event)
|
||||
|
@ -487,6 +516,7 @@ void FeedView::setItemDelegate(QAbstractItemDelegate* delegate)
|
|||
elementMargin = MessageDelegate::margin;
|
||||
connect(del, &MessageDelegate::buttonPushed, this, &FeedView::onMessageButtonPushed);
|
||||
connect(del, &MessageDelegate::invalidPath, this, &FeedView::onMessageInvalidPath);
|
||||
connect(del, &MessageDelegate::openLink, &QDesktopServices::openUrl);
|
||||
} else {
|
||||
specialDelegate = false;
|
||||
elementMargin = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue