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,20 @@ LRESULT wmNotifyToolTip (NMTTCUSTOMDRAW nmcd, long lParam) {
return null;
}

void destroyImageList() {
// Bug in windows: Cannot set the imageList handle to 0 directly, it doesn't
// seems to cache the previous imageList and show flaky behavior. Instead set
// the size of the image to the minimum (1,1) and then set the imageList to 0.
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 +7372,12 @@ void handleDPIChange(Event event, float scalingFactor) {
imageList = null;
}

if ((style & SWT.CHECK) != 0 ) {
destroyImageList();
int size = getItemHeightInPixels();
setCheckboxImageList(size, size, true);
}

// 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 +7395,6 @@ void handleDPIChange(Event event, float scalingFactor) {
// Update scrollbar width if no columns are available
setScrollWidth(scrollWidth);
}
fixCheckboxImageListColor (true);
settingItemHeight = false;
settingItemHeight = false;
}
}
Loading