35
35
36
36
QgsAttributeTableView::QgsAttributeTableView ( QWidget *parent )
37
37
: QTableView( parent )
38
- , mMasterModel( nullptr )
39
38
, mFilterModel( nullptr )
40
39
, mFeatureSelectionModel( nullptr )
41
40
, mFeatureSelectionManager( nullptr )
42
- , mModel( nullptr )
43
41
, mActionPopup( nullptr )
44
42
, mRowSectionAnchor( 0 )
45
43
, mCtrlDragSelectionFlag( QItemSelectionModel::Select )
46
- , mActionWidget( nullptr )
47
44
{
48
45
QSettings settings;
49
46
restoreGeometry ( settings.value ( " /BetterAttributeTable/geometry" ).toByteArray () );
@@ -52,8 +49,6 @@ QgsAttributeTableView::QgsAttributeTableView( QWidget *parent )
52
49
horizontalHeader ()->setHighlightSections ( false );
53
50
54
51
// We need mouse move events to create the action button on hover
55
- setMouseTracking ( true );
56
-
57
52
mTableDelegate = new QgsAttributeTableDelegate ( this );
58
53
setItemDelegate ( mTableDelegate );
59
54
@@ -121,6 +116,7 @@ void QgsAttributeTableView::setModel( QgsAttributeTableFilterModel* filterModel
121
116
if ( mFilterModel )
122
117
{
123
118
connect ( mFilterModel , SIGNAL ( destroyed () ), this , SLOT ( modelDeleted () ) );
119
+ connect ( mTableDelegate , SIGNAL ( actionColumnItemPainted ( QModelIndex ) ), this , SLOT ( onActionColumnItemPainted ( QModelIndex ) ) );
124
120
}
125
121
126
122
delete mFeatureSelectionModel ;
@@ -138,10 +134,6 @@ void QgsAttributeTableView::setModel( QgsAttributeTableFilterModel* filterModel
138
134
mTableDelegate ->setFeatureSelectionModel ( mFeatureSelectionModel );
139
135
connect ( mFeatureSelectionModel , SIGNAL ( requestRepaint ( QModelIndexList ) ), this , SLOT ( repaintRequested ( QModelIndexList ) ) );
140
136
connect ( mFeatureSelectionModel , SIGNAL ( requestRepaint () ), this , SLOT ( repaintRequested () ) );
141
-
142
- mActionWidget .reset ( createActionWidget ( 0 ) );
143
- mActionWidget ->setVisible ( false );
144
- updateActionImage ( mActionWidget .data () );
145
137
}
146
138
}
147
139
@@ -238,15 +230,6 @@ void QgsAttributeTableView::mouseReleaseEvent( QMouseEvent *event )
238
230
239
231
void QgsAttributeTableView::mouseMoveEvent ( QMouseEvent *event )
240
232
{
241
- QModelIndex index = indexAt ( event->pos () );
242
- if ( index.data ( QgsAttributeTableFilterModel::TypeRole ) == QgsAttributeTableFilterModel::ColumnTypeActionButton )
243
- {
244
- Q_ASSERT ( index.isValid () );
245
-
246
- if ( !indexWidget ( index ) )
247
- setIndexWidget ( index, createActionWidget ( mFilterModel ->data ( index, QgsAttributeTableModel::FeatureIdRole ).toLongLong () ) );
248
- }
249
-
250
233
setSelectionMode ( QAbstractItemView::NoSelection );
251
234
QTableView::mouseMoveEvent ( event );
252
235
setSelectionMode ( QAbstractItemView::ExtendedSelection );
@@ -396,18 +379,13 @@ void QgsAttributeTableView::actionTriggered()
396
379
void QgsAttributeTableView::columnSizeChanged ( int index, int oldWidth, int newWidth )
397
380
{
398
381
Q_UNUSED ( oldWidth )
399
- if ( mFilterModel ->actionColumnIndex () == index )
400
- {
401
- mActionWidget ->resize ( newWidth, mActionWidget ->height () );
402
- updateActionImage ( mActionWidget .data () );
403
- }
404
382
emit columnResized ( index, newWidth );
405
383
}
406
384
407
- void QgsAttributeTableView::updateActionImage ( QWidget* widget )
385
+ void QgsAttributeTableView::onActionColumnItemPainted ( const QModelIndex& index )
408
386
{
409
- QImage image ( widget-> size (), QImage::Format_ARGB32_Premultiplied );
410
- QPainter painter ( &image );
411
- widget-> render ( &painter );
412
- mTableDelegate -> setActionWidgetImage ( image );
387
+ if ( ! indexWidget ( index ) )
388
+ {
389
+ setIndexWidget ( index, createActionWidget ( mFilterModel -> data ( index, QgsAttributeTableModel::FeatureIdRole ). toLongLong () ) );
390
+ }
413
391
}
0 commit comments