diff --git a/sources/ElementsCollection/elementscollectionwidget.cpp b/sources/ElementsCollection/elementscollectionwidget.cpp index 7c7f59ad7..9d711fbaf 100644 --- a/sources/ElementsCollection/elementscollectionwidget.cpp +++ b/sources/ElementsCollection/elementscollectionwidget.cpp @@ -29,6 +29,7 @@ #include "qetproject.h" #include "qetelementeditor.h" #include "elementstreeview.h" +#include "qetdiagrameditor.h" #include #include @@ -115,6 +116,14 @@ bool ElementsCollectionWidget::event(QEvent *event) return QWidget::event(event); } +void ElementsCollectionWidget::leaveEvent(QEvent *event) +{ + if (QETDiagramEditor *qde = QETApp::diagramEditorAncestorOf(this)) + qde->statusBar()->clearMessage(); + + QWidget::leaveEvent(event); +} + void ElementsCollectionWidget::setUpAction() { m_open_dir = new QAction(QET::Icons::DocumentOpen, tr("Ouvrir le dossier correspondant"), this); @@ -190,6 +199,13 @@ void ElementsCollectionWidget::setUpConnection() connect(m_tree_view, &QTreeView::doubleClicked, [this](const QModelIndex &index) { this->m_index_at_context_menu = index ; this->editElement();}); + + connect(m_tree_view, &QTreeView::entered, [this] (const QModelIndex &index) { + QETDiagramEditor *qde = QETApp::diagramEditorAncestorOf(this); + ElementCollectionItem *eci = elementCollectionItemForIndex(index); + if (qde && eci) + qde->statusBar()->showMessage(eci->localName()); + }); } /** diff --git a/sources/ElementsCollection/elementscollectionwidget.h b/sources/ElementsCollection/elementscollectionwidget.h index a7c769e57..0ce692d8b 100644 --- a/sources/ElementsCollection/elementscollectionwidget.h +++ b/sources/ElementsCollection/elementscollectionwidget.h @@ -54,6 +54,7 @@ class ElementsCollectionWidget : public QWidget protected: virtual bool event(QEvent *event); + virtual void leaveEvent(QEvent *event); private: void setUpAction(); diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 2c56261f2..bbc4fda21 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -609,6 +609,23 @@ QETDiagramEditor *QETApp::diagramEditorForFile(const QString &filepath) { return(0); } +/** + * @brief QETApp::diagramEditorAncestorOf + * @param child + * @return the parent QETDiagramEditor (or grandparent and so on to any level) of the given child. + * If not return nullptr; + */ +QETDiagramEditor *QETApp::diagramEditorAncestorOf (const QWidget *child) +{ + foreach (QETDiagramEditor *qde, QETApp::diagramEditors()) { + if (qde->isAncestorOf(child)) { + return qde; + } + } + + return nullptr; +} + #ifdef QET_ALLOW_OVERRIDE_CED_OPTION /** Redefinit le chemin du dossier des elements communs diff --git a/sources/qetapp.h b/sources/qetapp.h index 0eac55eac..c5a8e691b 100644 --- a/sources/qetapp.h +++ b/sources/qetapp.h @@ -122,6 +122,7 @@ class QETApp : public QETSingleApplication { static QString lang_dir; ///< Directory containing localization files. static QFont diagramTextsFont(qreal = -1.0); static QETDiagramEditor *diagramEditorForFile(const QString &); + static QETDiagramEditor *diagramEditorAncestorOf (const QWidget *child); static QList diagramEditors(); static QList elementEditors(); static QList elementEditors(QETProject *);