39
39
#include < QToolButton>
40
40
#include < QDockWidget>
41
41
42
+ class QAttributeTableDock : public QDockWidget
43
+ {
44
+ public:
45
+ QAttributeTableDock ( const QString & title, QWidget * parent = 0 , Qt::WindowFlags flags = 0 )
46
+ : QDockWidget( title, parent, flags )
47
+ {
48
+ }
49
+
50
+ virtual void closeEvent ( QCloseEvent * ev )
51
+ {
52
+ deleteLater ();
53
+ }
54
+ };
55
+
42
56
QgsAttributeTableDisplay::QgsAttributeTableDisplay (QgsVectorLayer* layer)
43
57
: QDialog(0 , Qt::Window),
44
58
mLayer(layer),
@@ -107,7 +121,7 @@ QgsAttributeTableDisplay::QgsAttributeTableDisplay(QgsVectorLayer* layer)
107
121
bool myDockFlag = mySettings.value (" /qgis/dockAttributeTable" ,false ).toBool ();
108
122
if (myDockFlag )
109
123
{
110
- mDock = new QDockWidget (tr (" Attribute table - " ) + layer->name (), QgisApp::instance ());
124
+ mDock = new QAttributeTableDock (tr (" Attribute table - " ) + layer->name (), QgisApp::instance ());
111
125
mDock ->setAllowedAreas (Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
112
126
mDock ->setWidget (this );
113
127
QgisApp::instance ()->addDockWidget (Qt::BottomDockWidgetArea, mDock );
@@ -124,9 +138,11 @@ QgsAttributeTableDisplay::~QgsAttributeTableDisplay()
124
138
125
139
void QgsAttributeTableDisplay::closeEvent (QCloseEvent *ev)
126
140
{
127
- saveWindowLocation ();
141
+ if (mDock ==NULL )
142
+ saveWindowLocation ();
143
+
128
144
ev->ignore ();
129
- delete this ;
145
+ deleteLater () ;
130
146
}
131
147
132
148
void QgsAttributeTableDisplay::fillTable ()
@@ -280,7 +296,7 @@ void QgsAttributeTableDisplay::doSearch(QString searchString)
280
296
281
297
mSearchIds .clear ();
282
298
283
- mLayer ->select (mLayer ->pendingAllAttributesList (), true , false );
299
+ mLayer ->select (mLayer ->pendingAllAttributesList (), QgsRect () , false );
284
300
285
301
QgsFeature f;
286
302
while ( mLayer ->getNextFeature (f) )
0 commit comments