Skip to content

Commit 6e1f579

Browse files
author
wonder
committed
Fix for #1730 and some small updates in attribute table view code. Contributed by Vita Cizek.
git-svn-id: http://svn.osgeo.org/qgis/trunk@10925 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 198bf73 commit 6e1f579

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

src/app/attributetable/qgsattributetabledialog.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *theLayer, QWid
114114

115115
QgsAttributeTableDialog::~QgsAttributeTableDialog()
116116
{
117+
delete mSelectionModel;
117118
}
118119

119120
void QgsAttributeTableDialog::closeEvent( QCloseEvent* event )
@@ -279,7 +280,7 @@ void QgsAttributeTableDialog::updateRowSelection( int index )
279280
// map index to filter model
280281
//index = mFilterModel->mapFromSource(mModel->index(index, 0)).row();
281282

282-
if ( mView->shiftPressed )
283+
if ( mView->shiftPressed() )
283284
{
284285
QgsDebugMsg( "shift" );
285286
// get the first and last index of the rows to be selected/deselected
@@ -307,7 +308,7 @@ void QgsAttributeTableDialog::updateRowSelection( int index )
307308

308309
mLastClickedHeaderIndex = last;
309310
}
310-
else if ( mView->ctrlPressed )
311+
else if ( mView->ctrlPressed() )
311312
{
312313
QgsDebugMsg( "ctrl" );
313314
// update the single row selection, without starting a new selection

src/app/attributetable/qgsattributetableview.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,26 @@ QgsAttributeTableView::QgsAttributeTableView( QWidget* parent )
4242
setSelectionMode( QAbstractItemView::NoSelection );
4343
setSortingEnabled( true );
4444

45-
shiftPressed = false;
46-
ctrlPressed = false;
45+
mShiftPressed = false;
46+
mCtrlPressed = false;
4747
}
4848

4949
void QgsAttributeTableView::setLayer( QgsVectorLayer* layer )
5050
{
51-
QgsAttributeTableModel *bModel;
52-
5351
if ( layer->dataProvider()->capabilities() & QgsVectorDataProvider::RandomSelectGeometryAtId )
54-
bModel = new QgsAttributeTableModel( layer );
52+
mModel = new QgsAttributeTableModel( layer );
5553
else
56-
bModel = new QgsAttributeTableMemoryModel( layer );
57-
58-
QgsAttributeTableFilterModel* bfModel = new QgsAttributeTableFilterModel( layer );
59-
bfModel->setSourceModel( bModel );
54+
mModel = new QgsAttributeTableMemoryModel( layer );
6055

61-
setModel( bfModel );
56+
mFilterModel = new QgsAttributeTableFilterModel( layer );
57+
mFilterModel->setSourceModel( mModel );
58+
setModel( mFilterModel );
6259
}
6360

6461
QgsAttributeTableView::~QgsAttributeTableView()
6562
{
63+
delete mModel;
64+
delete mFilterModel;
6665
}
6766

6867
void QgsAttributeTableView::closeEvent( QCloseEvent *event )
@@ -75,9 +74,9 @@ void QgsAttributeTableView::keyPressEvent( QKeyEvent *event )
7574
{
7675
// shift pressed
7776
if ( event->key() == Qt::Key_Shift )// && event->modifiers() & Qt::ShiftModifier)
78-
shiftPressed = true;
77+
mShiftPressed = true;
7978
else if ( event->key() == Qt::Key_Control )
80-
ctrlPressed = true;
79+
mCtrlPressed = true;
8180
else
8281
QTableView::keyPressEvent( event );
8382
}
@@ -86,9 +85,9 @@ void QgsAttributeTableView::keyReleaseEvent( QKeyEvent *event )
8685
{
8786
// workaround for some Qt bug
8887
if ( event->key() == Qt::Key_Shift || event->key() == -1 )
89-
shiftPressed = false;
88+
mShiftPressed = false;
9089
else if ( event->key() == Qt::Key_Control )
91-
ctrlPressed = false;
90+
mCtrlPressed = false;
9291
else
9392
QTableView::keyReleaseEvent( event );
9493
}

src/app/attributetable/qgsattributetableview.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818

1919
#include <QTableView>
2020

21+
class QgsAttributeTableModel;
22+
class QgsAttributeTableFilterModel;
23+
2124
class QgsVectorLayer;
2225

2326

2427
class QgsAttributeTableView: public QTableView
2528
{
26-
//private slots:
27-
//void setRows(int rows);
28-
2929
public:
3030
QgsAttributeTableView( QWidget* parent = NULL );
3131
virtual ~QgsAttributeTableView();
@@ -35,10 +35,15 @@ class QgsAttributeTableView: public QTableView
3535
void closeEvent( QCloseEvent *event );
3636
void keyPressEvent( QKeyEvent *event );
3737
void keyReleaseEvent( QKeyEvent *event );
38+
bool shiftPressed() { return mShiftPressed; }
39+
bool ctrlPressed() { return mCtrlPressed; }
40+
41+
private:
42+
bool mShiftPressed;
43+
bool mCtrlPressed;
3844

39-
//make those private
40-
bool shiftPressed;
41-
bool ctrlPressed;
45+
QgsAttributeTableModel* mModel;
46+
QgsAttributeTableFilterModel* mFilterModel;
4247
};
4348

4449
#endif

0 commit comments

Comments
 (0)