@@ -54,6 +54,7 @@ class QgsIdentifyResultsDock : public QDockWidget
54
54
deleteLater ();
55
55
}
56
56
};
57
+
57
58
// Tree hierachy
58
59
//
59
60
// layer [userrole: QgsMapLayer]
@@ -124,13 +125,13 @@ void QgsIdentifyResults::addFeature( QgsMapLayer *layer, int fid,
124
125
const QMap<QString, QString> &attributes,
125
126
const QMap<QString, QString> &derivedAttributes )
126
127
{
127
- QTreeWidgetItem *item = layerItem ( layer );
128
+ QTreeWidgetItem *layItem = layerItem ( layer );
128
129
129
- if ( item == 0 )
130
+ if ( layItem == 0 )
130
131
{
131
- item = new QTreeWidgetItem ( QStringList () << layer->name () << tr ( " Layer" ) );
132
- item ->setData ( 0 , Qt::UserRole, QVariant::fromValue ( dynamic_cast <QObject*>( layer ) ) );
133
- lstResults->addTopLevelItem ( item );
132
+ layItem = new QTreeWidgetItem ( QStringList () << layer->name () << tr ( " Layer" ) );
133
+ layItem ->setData ( 0 , Qt::UserRole, QVariant::fromValue ( dynamic_cast <QObject*>( layer ) ) );
134
+ lstResults->addTopLevelItem ( layItem );
134
135
135
136
connect ( layer, SIGNAL ( destroyed () ), this , SLOT ( layerDestroyed () ) );
136
137
@@ -158,9 +159,7 @@ void QgsIdentifyResults::addFeature( QgsMapLayer *layer, int fid,
158
159
}
159
160
}
160
161
161
- item->addChild ( featItem );
162
- item->setExpanded ( true );
163
- featItem->setExpanded ( true );
162
+ layItem->addChild ( featItem );
164
163
}
165
164
166
165
// Call to show the dialog box.
@@ -170,6 +169,28 @@ void QgsIdentifyResults::show()
170
169
lstResults->sortItems ( 0 , Qt::AscendingOrder );
171
170
expandColumnsToFit ();
172
171
172
+ if ( lstResults->topLevelItemCount () > 0 )
173
+ {
174
+ QTreeWidgetItem *layItem = lstResults->topLevelItem ( 0 );
175
+ QTreeWidgetItem *featItem = layItem->child ( 0 );
176
+
177
+ if ( layItem->childCount () == 1 )
178
+ {
179
+ QgsVectorLayer *layer = dynamic_cast <QgsVectorLayer *>( layItem->data ( 0 , Qt::UserRole ).value <QObject *>() );
180
+ if ( layer && layer->isEditable () )
181
+ {
182
+ // if this is the only feature, it's on a vector layer and that layer is editable:
183
+ // don't show the edit dialog instead of the results window
184
+ editFeature ( featItem );
185
+ return ;
186
+ }
187
+ }
188
+
189
+ // expand first layer and feature
190
+ featItem->setExpanded ( true );
191
+ layItem->setExpanded ( true );
192
+ }
193
+
173
194
QDialog::show ();
174
195
}
175
196
// Slot called when user clicks the Close button
0 commit comments