diff options
Diffstat (limited to 'src/widgets/itemviews/qabstractitemview_p.h')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview_p.h | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h index 257e368175..433429f48b 100644 --- a/src/widgets/itemviews/qabstractitemview_p.h +++ b/src/widgets/itemviews/qabstractitemview_p.h @@ -16,17 +16,22 @@ // #include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qabstractitemview.h" #include "private/qabstractscrollarea_p.h" #include "private/qabstractitemmodel_p.h" #include "QtWidgets/qapplication.h" #include "QtGui/qevent.h" #include "QtCore/qmimedata.h" #include "QtGui/qpainter.h" -#include "QtCore/qpair.h" #include "QtGui/qregion.h" + #include "QtCore/qdebug.h" #include "QtCore/qbasictimer.h" #include "QtCore/qelapsedtimer.h" +#include <QtCore/qpointer.h> + + +#include <array> QT_REQUIRE_CONFIG(itemviews); @@ -63,20 +68,20 @@ public: void init(); - virtual void _q_rowsRemoved(const QModelIndex &parent, int start, int end); - virtual void _q_rowsInserted(const QModelIndex &parent, int start, int end); - virtual void _q_columnsAboutToBeRemoved(const QModelIndex &parent, int start, int end); - virtual void _q_columnsRemoved(const QModelIndex &parent, int start, int end); - virtual void _q_columnsInserted(const QModelIndex &parent, int start, int end); - virtual void _q_modelDestroyed(); - virtual void _q_layoutChanged(); - virtual void _q_rowsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); - virtual void _q_columnsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); + virtual void rowsRemoved(const QModelIndex &parent, int start, int end); + virtual void rowsInserted(const QModelIndex &parent, int start, int end); + virtual void columnsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + virtual void columnsRemoved(const QModelIndex &parent, int start, int end); + virtual void columnsInserted(const QModelIndex &parent, int start, int end); + virtual void modelDestroyed(); + virtual void layoutChanged(); + virtual void rowsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); + virtual void columnsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); virtual QRect intersectedRect(const QRect rect, const QModelIndex &topLeft, const QModelIndex &bottomRight) const; - void _q_headerDataChanged() { doDelayedItemsLayout(); } - void _q_scrollerStateChanged(); - void _q_delegateSizeHintChanged(const QModelIndex &index); + void headerDataChanged() { doDelayedItemsLayout(); } + void scrollerStateChanged(); + void delegateSizeHintChanged(const QModelIndex &index); void fetchMore(); @@ -178,8 +183,8 @@ public: inline void releaseEditor(QWidget *editor, const QModelIndex &index = QModelIndex()) const { if (editor) { Q_Q(const QAbstractItemView); - QObject::disconnect(editor, SIGNAL(destroyed(QObject*)), - q_func(), SLOT(editorDestroyed(QObject*))); + QObject::disconnect(editor, &QWidget::destroyed, + q, &QAbstractItemView::editorDestroyed); editor->removeEventFilter(itemDelegate); editor->hide(); QAbstractItemDelegate *delegate = q->itemDelegateForIndex(index); @@ -252,12 +257,14 @@ public: inline bool isIndexEnabled(const QModelIndex &index) const { return (model->flags(index) & Qt::ItemIsEnabled); } +#if QT_CONFIG(draganddrop) inline bool isIndexDropEnabled(const QModelIndex &index) const { return (model->flags(index) & Qt::ItemIsDropEnabled); } inline bool isIndexDragEnabled(const QModelIndex &index) const { return (model->flags(index) & Qt::ItemIsDragEnabled); } +#endif virtual bool selectionAllowed(const QModelIndex &index) const { // in some views we want to go ahead with selections, even if the index is invalid @@ -304,13 +311,16 @@ public: return static_cast<QAbstractItemModelPrivate *>(model->d_ptr.data())->persistent.indexes.contains(index); } +#if QT_CONFIG(draganddrop) QModelIndexList selectedDraggableIndexes() const; + void maybeStartDrag(QPoint eventPoint); +#endif void doDelayedReset() { //we delay the reset of the timer because some views (QTableView) //with headers can't handle the fact that the model has been destroyed - //all _q_modelDestroyed slots must have been called + //all modelDestroyed() slots must have been called if (!delayedReset.isActive()) delayedReset.start(0, q_func()); } @@ -411,7 +421,18 @@ public: bool verticalScrollModeSet; bool horizontalScrollModeSet; + virtual QRect visualRect(const QModelIndex &index) const { return q_func()->visualRect(index); } + + std::array<QMetaObject::Connection, 14> modelConnections; + std::array<QMetaObject::Connection, 4> scrollbarConnections; +#if QT_CONFIG(gestures) && QT_CONFIG(scroller) + QMetaObject::Connection scollerConnection; +#endif + private: + void connectDelegate(QAbstractItemDelegate *delegate); + void disconnectDelegate(QAbstractItemDelegate *delegate); + void disconnectAll(); inline QAbstractItemDelegate *delegateForIndex(const QModelIndex &index) const { QMap<int, QPointer<QAbstractItemDelegate> >::ConstIterator it; |