Fix and Improve Multi-selection for Diagram Operations

This commit is contained in:
Kellermorph
2026-05-13 19:42:11 +02:00
parent a2b6516eb3
commit 0b79dfd149
8 changed files with 459 additions and 257 deletions

View File

@@ -22,6 +22,7 @@
#include "qeticons.h"
#include "qetproject.h"
#include "titleblock/templatescollection.h"
#include <QApplication>
/*
Lorsque le flag ENABLE_PANEL_DND_CHECKS est defini, le panel d'elements
@@ -42,7 +43,7 @@ ElementsPanel::ElementsPanel(QWidget *parent) :
first_reload_(true)
{
// selection unique
setSelectionMode(QAbstractItemView::SingleSelection);
setSelectionMode(QAbstractItemView::ExtendedSelection);
setColumnCount(1);
setExpandsOnDoubleClick(true);
setMouseTracking(true);
@@ -299,11 +300,14 @@ void ElementsPanel::reload()
}
/**
@brief ElementsPanel::slot_clicked
handle click on qtwi
@param qtwi item that was clickerd on
*/
* @brief ElementsPanel::slot_clicked
* handle click on qtwi
* @param qtwi item that was clickerd on
*/
void ElementsPanel::slot_clicked(QTreeWidgetItem *clickedItem, int) {
if (QApplication::keyboardModifiers() & (Qt::ShiftModifier | Qt::ControlModifier)) {
return;
}
requestForItem(clickedItem);
}
@@ -553,3 +557,20 @@ void ElementsPanel::keyPressEvent(QKeyEvent *event)
QTreeView::keyPressEvent(event);
}
}
/**
* @brief ElementsPanel::selectedDiagrams
* @return A list of all currently selected diagrams in the panel.
*/
QList<Diagram *> ElementsPanel::selectedDiagrams() const
{
QList<Diagram *> diagrams;
foreach (QTreeWidgetItem *item, selectedItems()) {
if (item->type() == QET::Diagram) {
if (Diagram *diagram = valueForItem<Diagram *>(item)) {
diagrams.append(diagram);
}
}
}
return diagrams;
}