From 27a603e4fed90e09aef8cf891ef27e06e02bff3d Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 13 Dec 2015 10:16:09 +0000 Subject: [PATCH] Qt: eat less cpu in ownerdata mode when imagelist is assigned without imageindexes per item. issue #29179 git-svn-id: trunk@50759 - --- lcl/interfaces/qt/qtwidgets.pas | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index fee820d6dc..fe870efe20 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -11629,13 +11629,13 @@ var VHeight: Integer; // viewport height RowHeight: Integer; item: QListWidgetItemH; - v: QVariantH; + v, v2, v3: QVariantH; WStr: WideString; DataStr: WideString; ImgList: TCustomImageList; AImageIndex: TImageIndex; Bmp: TBitmap; - v2: QVariantH; + AIcon: QIconH; AOk: Boolean; begin @@ -11709,9 +11709,25 @@ begin if (AImageIndex < 0) then begin v2 := QVariant_create; - QListWidgetItem_setData(item, QtListViewOwnerDataRole, v2); - QVariant_destroy(v2); - QListWidgetItem_setIcon(item, nil); + AIcon := QIcon_create; + try + QListWidgetItem_data(item, v2, QtListViewOwnerDataRole); + if not QVariant_isNull(v2) then + begin + v3 := QVariant_create; + try + QListWidgetItem_setData(item, QtListViewOwnerDataRole, v3); + finally + QVariant_destroy(v3); + end; + end; + QListWidgetItem_icon(item, AIcon); + if not QIcon_isNull(AIcon) then + QListWidgetItem_setIcon(item, nil); + finally + QVariant_destroy(v2); + QIcon_destroy(AIcon); + end; end; end;