Fix component-info annotation index collision across pages

This commit is contained in:
Kellermorph
2026-08-15 11:57:19 +02:00
parent f0348a7cd8
commit 1780fde458
2 changed files with 4 additions and 4 deletions
+3 -3
View File
@@ -256,6 +256,7 @@ void ProjectPrintWindow::requestPaint()
bool first = true; bool first = true;
QPainter painter(m_printer); QPainter painter(m_printer);
int annotIndex = 0;
// A real PDF export uses the QPdfEngine; the on-screen preview uses a // A real PDF export uses the QPdfEngine; the on-screen preview uses a
// preview paint engine. We only post-process when actually writing a PDF. // preview paint engine. We only post-process when actually writing a PDF.
@@ -269,7 +270,7 @@ void ProjectPrintWindow::requestPaint()
for (auto diagram : selectedDiagram()) for (auto diagram : selectedDiagram())
{ {
first ? first = false : m_printer->newPage(); first ? first = false : m_printer->newPage();
printDiagram(diagram, ui->m_fit_in_page_cb->isChecked(), &painter, m_printer, diagramPageMap); printDiagram(diagram, ui->m_fit_in_page_cb->isChecked(), &painter, m_printer, diagramPageMap, annotIndex);
} }
// Note: do NOT call painter.end() or pdfConvertUriToGoTo() here. // Note: do NOT call painter.end() or pdfConvertUriToGoTo() here.
@@ -287,7 +288,7 @@ void ProjectPrintWindow::requestPaint()
* @param fit_page * @param fit_page
* @param printer * @param printer
*/ */
void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter *painter, QPrinter *printer, const QMap<Diagram*, int> &diagramPageMap) void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter *painter, QPrinter *printer, const QMap<Diagram*, int> &diagramPageMap, int &annotIndex)
{ {
////Prepare the print//// ////Prepare the print////
@@ -432,7 +433,6 @@ void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter
////Collect component info for popup annotations//// ////Collect component info for popup annotations////
if (ui->m_component_info_cb->isChecked()) { if (ui->m_component_info_cb->isChecked()) {
int annotIndex = 0;
for (auto *item : diagram->items()) { for (auto *item : diagram->items()) {
auto *el = qgraphicsitem_cast<Element*>(item); auto *el = qgraphicsitem_cast<Element*>(item);
if (!el) continue; if (!el) continue;
+1 -1
View File
@@ -83,7 +83,7 @@ class ProjectPrintWindow : public QMainWindow
private: private:
void requestPaint(); void requestPaint();
void printDiagram(Diagram *diagram, bool fit_page, QPainter *painter, QPrinter *printer, const QMap<Diagram*, int> &diagramPageMap = {}); void printDiagram(Diagram *diagram, bool fit_page, QPainter *painter, QPrinter *printer, const QMap<Diagram*, int> &diagramPageMap, int &annotIndex);
QRect diagramRect(Diagram *diagram, const ExportProperties &option) const; QRect diagramRect(Diagram *diagram, const ExportProperties &option) const;
int horizontalPagesCount(Diagram *diagram, const ExportProperties &option, bool full_page) const; int horizontalPagesCount(Diagram *diagram, const ExportProperties &option, bool full_page) const;
int verticalPagesCount(Diagram *diagram, const ExportProperties &option, bool full_page) const; int verticalPagesCount(Diagram *diagram, const ExportProperties &option, bool full_page) const;