From f93bc413e9325750c8d41a465090058386518cfc Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Sun, 3 Jan 2021 11:06:13 +1100 Subject: Added 'busy' cursor while current tab is loading --- src/widgets/kristalltextbrowser.cpp | 20 ++++++++++++++++++++ src/widgets/kristalltextbrowser.hpp | 5 +++++ 2 files changed, 25 insertions(+) (limited to 'src/widgets') diff --git a/src/widgets/kristalltextbrowser.cpp b/src/widgets/kristalltextbrowser.cpp index c813b05..f94485e 100644 --- a/src/widgets/kristalltextbrowser.cpp +++ b/src/widgets/kristalltextbrowser.cpp @@ -28,7 +28,27 @@ void KristallTextBrowser::mouseReleaseEvent(QMouseEvent *event) } } +void KristallTextBrowser::mouseMoveEvent(QMouseEvent *event) +{ + QTextBrowser::mouseMoveEvent(event); + + // This slight hack allows us to set the "default" cursor, + // (i.e when not hovering over links) We need to do this + // because QTextBrowser for some reason resets viewport cursor + // to ArrowCursor after we hover over links + const QCursor& cur = this->viewport()->cursor(); + if (cur != this->wanted_cursor && cur != Qt::PointingHandCursor) + { + this->viewport()->setCursor(wanted_cursor); + } +} + void KristallTextBrowser::on_anchorClicked(const QUrl &url) { emit this->anchorClicked(url, this->signal_new_tab); } + +void KristallTextBrowser::setDefaultCursor(const QCursor &cur) +{ + this->wanted_cursor = cur; +} diff --git a/src/widgets/kristalltextbrowser.hpp b/src/widgets/kristalltextbrowser.hpp index def130a..cf0101a 100644 --- a/src/widgets/kristalltextbrowser.hpp +++ b/src/widgets/kristalltextbrowser.hpp @@ -12,6 +12,10 @@ public: void mouseReleaseEvent(QMouseEvent * event) override; + void mouseMoveEvent(QMouseEvent * event) override; + + void setDefaultCursor(QCursor const & shape); + signals: void anchorClicked(QUrl const &, bool open_in_new_tab); @@ -20,6 +24,7 @@ private: // slots private: bool signal_new_tab = false; + QCursor wanted_cursor; }; #endif // KRISTALLTEXTBROWSER_HPP -- cgit v1.2.3