# # # patch "guitone/src/util/IconProvider.cpp" # from [b477c36ea248717a82d926af56f22fa6ca685a92] # to [50ba2d05db08f898c0f401fe1f740ed431f3a8a3] # ============================================================ --- guitone/src/util/IconProvider.cpp b477c36ea248717a82d926af56f22fa6ca685a92 +++ guitone/src/util/IconProvider.cpp 50ba2d05db08f898c0f401fe1f740ed431f3a8a3 @@ -188,32 +188,37 @@ IconProvider::IconProvider(void) QImage overlay(i.value()); overlay.createAlphaMask(); -#ifdef Q_WS_MAC - // on OSX system icons have a default size of 32x32 - // which are later scaled down to 16x16 - // so we scale our 16x16 overlay up to 32x32 - // before we apply it on the original icon - overlay = overlay.scaled(32, 32); -#endif - // the basic icons have to be recreated for each state // since we later paint on them QImage fileImage(style->standardPixmap(QStyle::SP_FileIcon).toImage()); QImage folderImageClosed(style->standardPixmap(QStyle::SP_DirClosedIcon).toImage()); QImage folderImageOpened(style->standardPixmap(QStyle::SP_DirOpenIcon).toImage()); + // note: the overlays are scaled to fit the different icon sizes + // on different platforms / with different stylings, so the overlay + // always perfectly fits the actual image + // file icon QPainter filePainter(&fileImage); - filePainter.drawImage(0, 0, overlay); + filePainter.drawImage( + 0, 0, + overlay.scaled(fileImage.width(), fileImage.height()) + ); filePainter.end(); fileIcons[state] = QIcon(QPixmap::fromImage(fileImage)); - // folder icon + // folder icons QPainter folderPainter1(&folderImageClosed); - folderPainter1.drawImage(0, 0, overlay); + folderPainter1.drawImage( + 0, 0, + overlay.scaled(folderImageClosed.width(), folderImageClosed.height()) + ); folderPainter1.end(); QPainter folderPainter2(&folderImageOpened); - folderPainter2.drawImage(0, 0, overlay); + folderPainter2.drawImage( + 0, 0, + overlay.scaled(folderImageOpened.width(), folderImageOpened.height()) + ); folderPainter2.end(); folderIcons[state] = QIcon(QPixmap::fromImage(folderImageClosed));