diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 610accbb6..4f19ca28a 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -1182,6 +1182,19 @@ QSet Diagram::selectedConductorTexts() const { return(selected_texts); } + +QSet Diagram::selectedElementTexts() const { + QSet selected_texts; + foreach(QGraphicsItem *item, selectedItems()) { + if (ElementTextItem *cti = qgraphicsitem_cast< ElementTextItem*>(item)) { + selected_texts << cti; + } + } + return(selected_texts); +} + + + /// @return true si le presse-papier semble contenir un schema bool Diagram::clipboardMayContainDiagram() { QString clipboard_text = QApplication::clipboard() -> text().trimmed(); diff --git a/sources/diagram.h b/sources/diagram.h index 1ec2184c5..9141a6ee9 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -180,6 +180,7 @@ class Diagram : public QGraphicsScene QList elements() const; QSet selectedTexts() const; QSet selectedConductorTexts() const; + QSet selectedElementTexts() const; QSet selectedConductors() const; DiagramContent content() const; DiagramContent selectedContent(); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 060862228..eb31b3aab 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -1234,13 +1234,14 @@ void QETDiagramEditor::slot_updateComplexActions() { // actions ayant besoin de textes selectionnes int selected_texts = dv ? (dv -> diagram() -> selectedTexts().count()) : 0; int selected_conductor_texts = dv ? (dv -> diagram() -> selectedConductorTexts().count()) : 0; + int selected_element_texts = dv ? (dv -> diagram() -> selectedElementTexts().count()) : 0; rotate_texts -> setEnabled(editable_diagram && selected_texts); // actions need only one editable item int selected_image = dv ? dv -> diagram() -> selectedContent().count(DiagramContent::Images) : 0; int selected_shape = dv ? dv -> diagram() -> selectedContent().count(DiagramContent::Shapes) : 0; - int selected_editable = selected_elements_count + (selected_texts - selected_conductor_texts) + selected_image + selected_shape; + int selected_editable = selected_elements_count + (selected_texts - selected_conductor_texts - selected_element_texts) + selected_image + selected_shape; if (selected_editable == 1) { edit_selection -> setEnabled(true);