Skip to content

Commit c78d2af

Browse files
author
wonder
committed
Further improvements in the speed when opening symbol properties dialog (symbology-ng)
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@14499 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 63a117a commit c78d2af

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

src/gui/symbology-ng/qgssymbollayerv2widget.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ QgsSvgMarkerSymbolLayerV2Widget::QgsSvgMarkerSymbolLayerV2Widget( QWidget* paren
438438

439439
#include <QTime>
440440
#include <QAbstractListModel>
441+
#include <QPixmapCache>
441442

442443
class QgsSvgListModel : public QAbstractListModel
443444
{
@@ -458,16 +459,22 @@ class QgsSvgListModel : public QAbstractListModel
458459

459460
if ( role == Qt::DecorationRole ) // icon
460461
{
461-
QSvgRenderer renderer;
462-
QPainter painter;
463-
464-
// render SVG file
465-
renderer.load( entry );
466-
QPixmap pixmap( QSize( 24, 24 ) );
467-
pixmap.fill();
468-
painter.begin( &pixmap );
469-
renderer.render( &painter );
470-
painter.end();
462+
463+
QPixmap pixmap;
464+
if ( !QPixmapCache::find( entry, pixmap ) )
465+
{
466+
// render SVG file
467+
QSvgRenderer renderer;
468+
QPainter painter;
469+
renderer.load( entry );
470+
pixmap = QPixmap( QSize( 24, 24 ) );
471+
pixmap.fill();
472+
painter.begin( &pixmap );
473+
renderer.render( &painter );
474+
painter.end();
475+
476+
QPixmapCache::insert( entry, pixmap );
477+
}
471478

472479
return pixmap;
473480
}

src/ui/symbollayer/widget_svgfill.ui

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,15 @@
5555
<property name="flow">
5656
<enum>QListView::LeftToRight</enum>
5757
</property>
58+
<property name="layoutMode">
59+
<enum>QListView::Batched</enum>
60+
</property>
5861
<property name="viewMode">
5962
<enum>QListView::IconMode</enum>
6063
</property>
64+
<property name="uniformItemSizes">
65+
<bool>true</bool>
66+
</property>
6167
</widget>
6268
</item>
6369
<item row="3" column="0">

src/ui/symbollayer/widget_svgmarker.ui

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@
141141
<property name="movement">
142142
<enum>QListView::Static</enum>
143143
</property>
144+
<property name="layoutMode">
145+
<enum>QListView::Batched</enum>
146+
</property>
144147
<property name="spacing">
145148
<number>2</number>
146149
</property>
@@ -153,6 +156,9 @@
153156
<property name="viewMode">
154157
<enum>QListView::IconMode</enum>
155158
</property>
159+
<property name="uniformItemSizes">
160+
<bool>true</bool>
161+
</property>
156162
<property name="wordWrap">
157163
<bool>true</bool>
158164
</property>

0 commit comments

Comments
 (0)