diff --git a/Pdf4QtLibWidgets/sources/pdfwidgettool.cpp b/Pdf4QtLibWidgets/sources/pdfwidgettool.cpp index a178202..362eb8a 100644 --- a/Pdf4QtLibWidgets/sources/pdfwidgettool.cpp +++ b/Pdf4QtLibWidgets/sources/pdfwidgettool.cpp @@ -216,11 +216,13 @@ PDFWidgetTool* PDFWidgetTool::getTopToolstackTool() const void PDFWidgetTool::addTool(PDFWidgetTool* tool) { tool->setActive(isActive()); + connect(tool, &PDFWidgetTool::messageDisplayRequest, this, &PDFWidgetTool::messageDisplayRequest); m_toolStack.push_back(tool); } void PDFWidgetTool::removeTool() { + disconnect(m_toolStack.back(), &PDFWidgetTool::messageDisplayRequest, this, &PDFWidgetTool::messageDisplayRequest); m_toolStack.back()->setActive(false); m_toolStack.pop_back(); } @@ -1272,7 +1274,8 @@ PDFPickTool::PDFPickTool(PDFDrawWidgetProxy* proxy, PDFPickTool::Mode mode, QObj m_mode(mode), m_pageIndex(-1), m_drawSelectionRectangle(true), - m_selectionRectangleColor(Qt::blue) + m_selectionRectangleColor(Qt::blue), + m_hideLargeCross(false) { switch (m_mode) { @@ -1362,10 +1365,21 @@ void PDFPickTool::drawPostRendering(QPainter* painter, QRect rect) const QPoint vtop = snappedPoint; QPoint vbottom = snappedPoint; - hleft.setX(0); - hright.setX(rect.width()); - vtop.setY(0); - vbottom.setY(rect.height()); + if (!m_hideLargeCross) + { + hleft.setX(0); + hright.setX(rect.width()); + vtop.setY(0); + vbottom.setY(rect.height()); + } + else + { + const int markSize = PDFWidgetUtils::scaleDPI_x(getProxy()->getWidget(), 4); + hleft.setX(hleft.x() - markSize); + hright.setX(hright.x() + markSize); + vtop.setY(vtop.y() - markSize); + vbottom.setY(vbottom.y() + markSize); + } painter->setPen(Qt::black); painter->drawLine(hleft, hright); @@ -1494,6 +1508,19 @@ void PDFPickTool::mouseMoveEvent(QWidget* widget, QMouseEvent* event) } } +void PDFPickTool::keyPressEvent(QWidget* widget, QKeyEvent* event) +{ + if (event->key() == Qt::Key_C) + { + m_hideLargeCross = !m_hideLargeCross; + Q_EMIT getProxy()->repaintNeeded(); + event->accept(); + return; + } + + BaseClass::keyPressEvent(widget, event); +} + QPointF PDFPickTool::getSnappedPoint() const { return m_snapper.getSnappedPoint(); @@ -1514,6 +1541,8 @@ void PDFPickTool::setActiveImpl(bool active) if (active) { buildSnapData(); + + Q_EMIT messageDisplayRequest(tr("Use key 'C' to show/hide large cross."), 15000); } else { diff --git a/Pdf4QtLibWidgets/sources/pdfwidgettool.h b/Pdf4QtLibWidgets/sources/pdfwidgettool.h index 2b644a8..1c3a919 100644 --- a/Pdf4QtLibWidgets/sources/pdfwidgettool.h +++ b/Pdf4QtLibWidgets/sources/pdfwidgettool.h @@ -368,6 +368,7 @@ public: virtual void mousePressEvent(QWidget* widget, QMouseEvent* event) override; virtual void mouseReleaseEvent(QWidget* widget, QMouseEvent* event) override; virtual void mouseMoveEvent(QWidget* widget, QMouseEvent* event) override; + virtual void keyPressEvent(QWidget* widget, QKeyEvent* event) override; QPointF getSnappedPoint() const; PDFInteger getPageIndex() const { return m_pageIndex; } @@ -408,6 +409,7 @@ private: std::vector m_pickedPoints; bool m_drawSelectionRectangle; QColor m_selectionRectangleColor; + bool m_hideLargeCross; }; /// Tool for selection of table in document. Rows and columns diff --git a/RELEASES.txt b/RELEASES.txt index 1bb97a8..5030f50 100644 --- a/RELEASES.txt +++ b/RELEASES.txt @@ -1,5 +1,6 @@ CURRENT: - Issue #248: update version and year in Help > About page + - Issue #247: option to hide cross when adding annotations V: 1.5.0.0 9.3.2025 - Issue #244: PageMaster: united one document after remove pages leads to lose the outline