Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7336,6 +7336,19 @@ LRESULT wmNotifyToolTip (NMTTCUSTOMDRAW nmcd, long lParam) {
return null;
}

void destroyImageList() {
long oldStateImageList = OS.SendMessage(handle, OS.LVM_GETIMAGELIST, OS.LVSIL_STATE, 0);
long oldhImageList = OS.SendMessage(handle, OS.LVM_GETIMAGELIST, OS.LVSIL_SMALL, 0);
long hImageList = OS.ImageList_Create (1, 1, 0, 0, 0);
OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_STATE, hImageList);
OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_SMALL, hImageList);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cant we get the old image lists from the LVM_SETIMAGELIST instead of LVM_GETIMAGELIST?

Suggested change
OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_SMALL, hImageList);
long hImageList = OS.ImageList_Create (1, 1, 0, 0, 0);
long oldStateImageList = OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_STATE, hImageList);
long oldhImageList =OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_SMALL, hImageList);

OS.ImageList_Destroy(oldStateImageList);
OS.ImageList_Destroy(oldhImageList);
OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_STATE, 0);
OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_SMALL, 0);
OS.ImageList_Destroy(hImageList);
}

@Override
void handleDPIChange(Event event, float scalingFactor) {
super.handleDPIChange(event, scalingFactor);
Expand All @@ -7358,6 +7371,12 @@ void handleDPIChange(Event event, float scalingFactor) {
imageList = null;
}

if((style & SWT.CHECK) != 0 ) {
destroyImageList();
int size = getItemHeightInPixels();
setCheckboxImageList(size, size, false);
Copy link
Contributor

@arunjose696 arunjose696 Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amartya4256 previously setCheckboxImageList was called with height and width of the icon and fixScroll true, why do we consider only the height now, is it because the checkbox is always square I see no visual regressions but just slightly confused why the height and width can be passed when setting checklbox ImageList, also why is fixscroll now false?

}

// if the item height was set at least once programmatically with CDDS_SUBITEMPREPAINT,
// the item height of the table is not managed by the OS anymore e.g. when the zoom
// on the monitor is changed, the height of the item will stay at the fixed size.
Expand All @@ -7375,7 +7394,6 @@ void handleDPIChange(Event event, float scalingFactor) {
// Update scrollbar width if no columns are available
setScrollWidth(scrollWidth);
}
fixCheckboxImageListColor (true);
settingItemHeight = false;
settingItemHeight = false;
}
}
Loading