diff --git a/src/plugins/help/helpviewer.cpp b/src/plugins/help/helpviewer.cpp index ebd4ae44c08..7a553000b23 100644 --- a/src/plugins/help/helpviewer.cpp +++ b/src/plugins/help/helpviewer.cpp @@ -85,6 +85,11 @@ HelpViewer::HelpViewer(QWidget *parent) { } +HelpViewer::~HelpViewer() +{ + restoreOverrideCursor(); +} + void HelpViewer::setActionVisible(Action action, bool visible) { if (visible) @@ -156,16 +161,25 @@ void HelpViewer::home() void HelpViewer::slotLoadStarted() { + ++m_loadOverrideStack; QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); } void HelpViewer::slotLoadFinished() { - QGuiApplication::restoreOverrideCursor(); + restoreOverrideCursor(); emit sourceChanged(source()); emit loadFinished(); } +void HelpViewer::restoreOverrideCursor() +{ + while (m_loadOverrideStack > 0) { + --m_loadOverrideStack; + QGuiApplication::restoreOverrideCursor(); + } +} + bool HelpViewer::handleForwardBackwardMouseButtons(QMouseEvent *event) { if (event->button() == Qt::XButton1) { diff --git a/src/plugins/help/helpviewer.h b/src/plugins/help/helpviewer.h index 488bb0bc5e2..c98e8dbbfb4 100644 --- a/src/plugins/help/helpviewer.h +++ b/src/plugins/help/helpviewer.h @@ -49,7 +49,7 @@ public: Q_DECLARE_FLAGS(Actions, Action) explicit HelpViewer(QWidget *parent = 0); - ~HelpViewer() { } + ~HelpViewer(); virtual QFont viewerFont() const = 0; virtual void setViewerFont(const QFont &font) = 0; @@ -109,7 +109,10 @@ protected: void slotLoadStarted(); void slotLoadFinished(); + void restoreOverrideCursor(); + Actions m_visibleActions = 0; + int m_loadOverrideStack = 0; }; } // namespace Internal