Fix high dpi multimonitor glitch (T2D missing icon fix)
This commit is contained in:
parent
6ec5f60a8f
commit
8d3bda3a5d
3 changed files with 42 additions and 31 deletions
|
@ -447,6 +447,7 @@ ToolOptionPopupButton::ToolOptionPopupButton(TTool *tool,
|
|||
QAction *action = addItem(createQIcon(items[i].iconName.toUtf8()));
|
||||
// make the tooltip text
|
||||
action->setToolTip(items[i].UIName);
|
||||
action->setIconVisibleInMenu(true);
|
||||
}
|
||||
setCurrentIndex(0);
|
||||
updateStatus();
|
||||
|
|
|
@ -453,7 +453,7 @@ int main(int argc, char *argv[]) {
|
|||
// qDebug() << "All icon theme search paths:" << QIcon::themeSearchPaths();
|
||||
|
||||
// Set show icons in menus flag (use iconVisibleInMenu to disable selectively)
|
||||
QApplication::instance()->setAttribute(Qt::AA_DontShowIconsInMenus, false);
|
||||
QApplication::instance()->setAttribute(Qt::AA_DontShowIconsInMenus, true);
|
||||
|
||||
TEnv::setApplicationFileName(argv[0]);
|
||||
|
||||
|
|
|
@ -405,41 +405,51 @@ QIcon createQIcon(const char *iconSVGName, bool useFullOpacity,
|
|||
// them for use in toolbars that are set for 20x20 we want to draw them onto a
|
||||
// 20x20 pixmap so they don't get resized in the GUI, they will be loaded into
|
||||
// the icon along with the original 16x16 pixmap.
|
||||
|
||||
// In case of multiple monitors with different resolutions, let's create icons
|
||||
// for those also
|
||||
if (themeIconPixmap.size() == QSize(16 * devPixRatio, 16 * devPixRatio)) {
|
||||
const QSize drawOnSize(20, 20);
|
||||
const int x = (drawOnSize.width() - 16) / 2; // left adjust
|
||||
const int y = (drawOnSize.height() - 16) / 2; // top adjust
|
||||
for (auto screen : QApplication::screens()) {
|
||||
QSize drawOnSize(20, 20);
|
||||
int otherDevPixRatio = screen->devicePixelRatio();
|
||||
if (otherDevPixRatio != devPixRatio) {
|
||||
drawOnSize.setWidth(16 * otherDevPixRatio);
|
||||
drawOnSize.setHeight(16 * otherDevPixRatio);
|
||||
}
|
||||
int x = (drawOnSize.width() - 16) / 2; // left adjust
|
||||
int y = (drawOnSize.height() - 16) / 2; // top adjust
|
||||
|
||||
// Base icon
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, baseOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::Off);
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, disabledOpacity, drawOnSize, x, y),
|
||||
QIcon::Disabled, QIcon::Off);
|
||||
|
||||
// Over icon
|
||||
icon.addPixmap(
|
||||
!overPixmap.isNull()
|
||||
? compositePixmap(overPixmap, activeOpacity, drawOnSize, x, y)
|
||||
: compositePixmap(themeIconPixmap, activeOpacity, drawOnSize, x, y),
|
||||
QIcon::Active);
|
||||
|
||||
// On icon
|
||||
if (!onPixmap.isNull()) {
|
||||
icon.addPixmap(compositePixmap(onPixmap, activeOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::On);
|
||||
// Base icon
|
||||
icon.addPixmap(
|
||||
compositePixmap(onPixmap, disabledOpacity, drawOnSize, x, y),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
} else {
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, activeOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::On);
|
||||
compositePixmap(themeIconPixmap, baseOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::Off);
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, disabledOpacity, drawOnSize, x, y),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
QIcon::Disabled, QIcon::Off);
|
||||
|
||||
// Over icon
|
||||
icon.addPixmap(
|
||||
!overPixmap.isNull()
|
||||
? compositePixmap(overPixmap, activeOpacity, drawOnSize, x, y)
|
||||
: compositePixmap(themeIconPixmap, activeOpacity, drawOnSize, x,
|
||||
y),
|
||||
QIcon::Active);
|
||||
|
||||
// On icon
|
||||
if (!onPixmap.isNull()) {
|
||||
icon.addPixmap(
|
||||
compositePixmap(onPixmap, activeOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::On);
|
||||
icon.addPixmap(
|
||||
compositePixmap(onPixmap, disabledOpacity, drawOnSize, x, y),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
} else {
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, activeOpacity, drawOnSize, x, y),
|
||||
QIcon::Normal, QIcon::On);
|
||||
icon.addPixmap(
|
||||
compositePixmap(themeIconPixmap, disabledOpacity, drawOnSize, x, y),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue