diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index 3ab62076a1..7d71dd7bd3 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -60,19 +60,18 @@ using namespace App; void SheetViewHeader::mouseMoveEvent(QMouseEvent* e) { // for some reason QWidget::setCursor() has no effect in QGraphicsView - // therefore we resort to override cursor + // therefore we resort to QGraphicsItem::setCursor const QCursor currentCursor = this->cursor(); QHeaderView::mouseMoveEvent(e); const QCursor newerCursor = this->cursor(); if (newerCursor != currentCursor) { - qApp->setOverrideCursor(newerCursor); + Q_EMIT cursorChanged(newerCursor); } } void SheetViewHeader::mouseReleaseEvent(QMouseEvent* event) { QHeaderView::mouseReleaseEvent(event); - qApp->setOverrideCursor(Qt::ArrowCursor); Q_EMIT resizeFinished(); } diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.h b/src/Mod/Spreadsheet/Gui/SheetTableView.h index 078b0aa61f..2c5bf81307 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.h +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.h @@ -45,6 +45,7 @@ public: } Q_SIGNALS: void resizeFinished(); + void cursorChanged(QCursor); protected: void mouseMoveEvent(QMouseEvent* e) override; diff --git a/src/Mod/Spreadsheet/Gui/ZoomableView.cpp b/src/Mod/Spreadsheet/Gui/ZoomableView.cpp index 7c6a3b0693..52128dbf0c 100644 --- a/src/Mod/Spreadsheet/Gui/ZoomableView.cpp +++ b/src/Mod/Spreadsheet/Gui/ZoomableView.cpp @@ -122,6 +122,18 @@ ZoomableView::ZoomableView(Ui::Sheet* ui) }); resetZoom(); + + auto connectCursorChangedSignal = [this](QHeaderView* hv) { + auto header = qobject_cast(hv); + connect(header, + &SpreadsheetGui::SheetViewHeader::cursorChanged, + this, + [this](const QCursor& newerCursor) { + qpw->setCursor(newerCursor); + }); + }; + connectCursorChangedSignal(stv->horizontalHeader()); + connectCursorChangedSignal(stv->verticalHeader()); } int ZoomableView::zoomLevel() const