/** * @RDE_HEADER@ * A QTreeView with some events catched * $Id$ * $HeadURL$ * $Author$ * * Created by Mike Wille, SLSE, 2016-10-07 */ #include "tree_view.h" #include #include namespace LtsDataView { // needed until QTBUG-78726 is fixed void TreeView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) { QTreeView::dataChanged(topLeft, bottomRight, roles); if (!m_toolTipPos.isNull() && (roles.isEmpty() || roles.contains(Qt::ToolTipRole))) { if (viewport()->mapToGlobal(m_toolTipPos) != QCursor::pos()) { m_toolTipPos = QPoint(); return; } const QModelIndex index = indexAt(m_toolTipPos); if (index.row() >= topLeft.row() && index.row() <= bottomRight.row() && index.column() >= topLeft.column() && index.column() <= bottomRight.column()) { QHelpEvent he(QEvent::ToolTip, m_toolTipPos, viewport()->mapToGlobal(m_toolTipPos)); QTreeView::viewportEvent(&he); m_toolTipPos = QPoint(); } } } void TreeView::keyPressEvent(QKeyEvent *event) { if (QGuiApplication::keyboardModifiers() == Qt::ControlModifier && event->key() == Qt::Key_C) emit signalCopyToClipBoard(); // queue ! QTreeView::keyPressEvent(event); } bool TreeView::edit(const QModelIndex &index, EditTrigger trigger, QEvent *event) { if (trigger == QAbstractItemView::NoEditTriggers) { const QMouseEvent *me = dynamic_cast(event); if (me && me->buttons().testFlag(Qt::LeftButton)) trigger = QAbstractItemView::AllEditTriggers; } return QTreeView::edit(index, trigger, event); } // needed until QTBUG-78726 is fixed bool TreeView::viewportEvent(QEvent *event) { bool ret = QTreeView::viewportEvent(event); if (event->type() == QEvent::ToolTip) { if (!ret) { QHelpEvent *he = static_cast(event); m_toolTipPos = he->pos(); } else m_toolTipPos = QPoint(); } return ret; } } // namespace LtsDataView