27
27
#include " qgssymbol.h"
28
28
#include " qgsvectordataprovider.h"
29
29
#include " qgsvectorlayer.h"
30
+ #include < QApplication>
30
31
#include < QDomDocument>
31
32
#include < QDomElement>
32
33
#include < QMimeData>
@@ -40,6 +41,9 @@ QgsLegendModel::QgsLegendModel(): QStandardItemModel()
40
41
connect ( QgsMapLayerRegistry::instance (), SIGNAL ( layerWasAdded ( QgsMapLayer* ) ), this , SLOT ( addLayer ( QgsMapLayer* ) ) );
41
42
}
42
43
setItemPrototype ( new QgsComposerSymbolItem () );
44
+
45
+ QWidgetList topLevelWidgets = QApplication::topLevelWidgets ();
46
+ mHasTopLevelWindow = ( topLevelWidgets.size () > 0 );
43
47
}
44
48
45
49
QgsLegendModel::~QgsLegendModel ()
@@ -147,7 +151,10 @@ int QgsLegendModel::addVectorLayerItemsV2( QStandardItem* layerItem, QgsVectorLa
147
151
currentSymbolItem->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
148
152
if ( symbolIt->second )
149
153
{
150
- currentSymbolItem->setIcon ( QgsSymbolLayerV2Utils::symbolPreviewIcon ( symbolIt->second , QSize ( 30 , 30 ) ) );
154
+ if ( mHasTopLevelWindow ) // only use QIcon / QPixmap if we have a running x-server
155
+ {
156
+ currentSymbolItem->setIcon ( QgsSymbolLayerV2Utils::symbolPreviewIcon ( symbolIt->second , QSize ( 30 , 30 ) ) );
157
+ }
151
158
currentSymbolItem->setSymbolV2 ( symbolIt->second ->clone () );
152
159
}
153
160
layerItem->setChild ( layerItem->rowCount (), 0 , currentSymbolItem );
@@ -228,8 +235,12 @@ int QgsLegendModel::addRasterLayerItem( QStandardItem* layerItem, QgsMapLayer* r
228
235
return 2 ;
229
236
}
230
237
238
+ QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem ();
231
239
// use a vector symbol item without symbol
232
- QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem ( QIcon ( rasterLayer->legendAsPixmap ( true ) ), " " );
240
+ if ( mHasTopLevelWindow ) // only use QIcon / QPixmap if we have a running x-server
241
+ {
242
+ currentSymbolItem->setIcon ( QIcon ( rasterLayer->legendAsPixmap ( true ) ) );
243
+ }
233
244
currentSymbolItem->setLayerID ( rasterLayer->getLayerID () );
234
245
int currentRowCount = layerItem->rowCount ();
235
246
layerItem->setChild ( currentRowCount, 0 , currentSymbolItem );
@@ -421,7 +432,11 @@ QStandardItem* QgsLegendModel::itemFromSymbol( QgsSymbol* s, int opacity, const
421
432
}
422
433
}
423
434
424
- currentSymbolItem = new QgsComposerSymbolItem ( QIcon ( QPixmap::fromImage ( symbolImage ) ), itemText );
435
+ currentSymbolItem = new QgsComposerSymbolItem ( itemText );
436
+ if ( mHasTopLevelWindow )// only use QIcon / QPixmap if we have a running x-server
437
+ {
438
+ currentSymbolItem->setIcon ( QIcon ( QPixmap::fromImage ( symbolImage ) ) );
439
+ }
425
440
426
441
if ( !currentSymbolItem )
427
442
{
0 commit comments