From eb8d8b68f0e66871f2b0c340e9aa2e920ad4460a Mon Sep 17 00:00:00 2001 From: xtemp09 Date: Sat, 21 Jun 2025 17:57:07 +0700 Subject: [PATCH] [Spreadsheet] Replace override cursor with QGraphicsItem::setCursor (#22097) * [Spreadsheet] Replace the risky use of override cursor with QGraphicsItem::setCursor * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/Spreadsheet/Gui/SheetTableView.cpp | 5 ++--- src/Mod/Spreadsheet/Gui/SheetTableView.h | 1 + src/Mod/Spreadsheet/Gui/ZoomableView.cpp | 12 ++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) 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