make menu icons optional
This commit is contained in:
parent
abb537f7d4
commit
818f80a99f
5 changed files with 56 additions and 22 deletions
|
@ -46,6 +46,7 @@ enum PreferencesItemId {
|
|||
interfaceFontStyle,
|
||||
colorCalibrationEnabled,
|
||||
colorCalibrationLutPaths,
|
||||
showIconsInMenu,
|
||||
viewerIndicatorEnabled,
|
||||
|
||||
//----------
|
||||
|
|
|
@ -1413,6 +1413,12 @@ QAction *MainWindow::createAction(const char *id, const char *name,
|
|||
QString newStatusTip, CommandType type,
|
||||
const char *iconSVGName) {
|
||||
QAction *action = new DVAction(tr(name), this);
|
||||
|
||||
#if !defined(_WIN32)
|
||||
bool visible = Preferences::instance()->getBoolValue(showIconsInMenu);
|
||||
action->setIconVisibleInMenu(visible);
|
||||
#endif
|
||||
|
||||
// In Qt5.15.2 - Windows, QMenu stylesheet has alignment issue when one item
|
||||
// has icon and another has not one. (See
|
||||
// https://bugreports.qt.io/browse/QTBUG-90242 for details.) To avoid the
|
||||
|
|
|
@ -1019,6 +1019,7 @@ QString PreferencesPopup::getUIString(PreferencesItemId id) {
|
|||
{colorCalibrationLutPaths,
|
||||
tr("3DLUT File for [%1]:")
|
||||
.arg(LutManager::instance()->getMonitorName())},
|
||||
{showIconsInMenu, tr("Show Icons In Menu*")},
|
||||
{viewerIndicatorEnabled, tr("Show Viewer Indicators")},
|
||||
|
||||
// Visualization
|
||||
|
@ -1476,6 +1477,7 @@ QWidget* PreferencesPopup::createInterfacePage() {
|
|||
// insertUI(interfaceFontStyle, lay, buildFontStyleList());
|
||||
QGridLayout* colorCalibLay = insertGroupBoxUI(colorCalibrationEnabled, lay);
|
||||
{ insertUI(colorCalibrationLutPaths, colorCalibLay); }
|
||||
insertUI(showIconsInMenu, lay);
|
||||
|
||||
lay->setRowStretch(lay->rowCount(), 1);
|
||||
insertFootNote(lay);
|
||||
|
|
|
@ -437,6 +437,15 @@ void Preferences::definePreferenceItems() {
|
|||
define(colorCalibrationLutPaths, "colorCalibrationLutPaths",
|
||||
QMetaType::QVariantMap, QVariantMap());
|
||||
|
||||
// hide menu icons by default in macOS since the icon color may not match with
|
||||
// the system color theme
|
||||
#ifdef Q_OS_MACOS
|
||||
bool defIconsVisible = false;
|
||||
#else
|
||||
bool defIconsVisible = true;
|
||||
#endif
|
||||
define(showIconsInMenu, "showIconsInMenu", QMetaType::Bool, defIconsVisible);
|
||||
|
||||
setCallBack(pixelsOnly, &Preferences::setPixelsOnly);
|
||||
setCallBack(linearUnits, &Preferences::setUnits);
|
||||
setCallBack(cameraUnits, &Preferences::setCameraUnits);
|
||||
|
|
|
@ -318,31 +318,47 @@ QIcon createQIcon(const char *iconSVGName, bool useFullOpacity) {
|
|||
|
||||
QIcon icon;
|
||||
|
||||
// Base icon
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, baseOpacity), QIcon::Normal,
|
||||
QIcon::Off);
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, disabledOpacity),
|
||||
QIcon::Disabled, QIcon::Off);
|
||||
#ifdef _WIN32
|
||||
bool showIconInMenu = Preferences::instance()->getBoolValue(showIconsInMenu);
|
||||
// set transparent icon
|
||||
if (themeIconPixmap.size() == QSize(16 * devPixRatio, 16 * devPixRatio) &&
|
||||
!showIconInMenu) {
|
||||
static QPixmap emptyPm(16 * devPixRatio, 16 * devPixRatio);
|
||||
emptyPm.fill(Qt::transparent);
|
||||
|
||||
// Over icon
|
||||
icon.addPixmap(!overPixmap.isNull()
|
||||
? compositePixmap(overPixmap, activeOpacity)
|
||||
: compositePixmap(themeIconPixmap, activeOpacity),
|
||||
QIcon::Active);
|
||||
|
||||
// On icon
|
||||
if (!onPixmap.isNull()) {
|
||||
icon.addPixmap(compositePixmap(onPixmap, activeOpacity), QIcon::Normal,
|
||||
QIcon::On);
|
||||
icon.addPixmap(compositePixmap(onPixmap, disabledOpacity), QIcon::Disabled,
|
||||
QIcon::On);
|
||||
} else {
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, activeOpacity),
|
||||
QIcon::Normal, QIcon::On);
|
||||
icon.addPixmap(emptyPm, QIcon::Normal, QIcon::Off);
|
||||
icon.addPixmap(emptyPm, QIcon::Normal, QIcon::On);
|
||||
icon.addPixmap(emptyPm, QIcon::Disabled, QIcon::Off);
|
||||
icon.addPixmap(emptyPm, QIcon::Disabled, QIcon::On);
|
||||
icon.addPixmap(emptyPm, QIcon::Active);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
// Base icon
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, baseOpacity), QIcon::Normal,
|
||||
QIcon::Off);
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, disabledOpacity),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
}
|
||||
QIcon::Disabled, QIcon::Off);
|
||||
|
||||
// Over icon
|
||||
icon.addPixmap(!overPixmap.isNull()
|
||||
? compositePixmap(overPixmap, activeOpacity)
|
||||
: compositePixmap(themeIconPixmap, activeOpacity),
|
||||
QIcon::Active);
|
||||
|
||||
// On icon
|
||||
if (!onPixmap.isNull()) {
|
||||
icon.addPixmap(compositePixmap(onPixmap, activeOpacity), QIcon::Normal,
|
||||
QIcon::On);
|
||||
icon.addPixmap(compositePixmap(onPixmap, disabledOpacity),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
} else {
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, activeOpacity),
|
||||
QIcon::Normal, QIcon::On);
|
||||
icon.addPixmap(compositePixmap(themeIconPixmap, disabledOpacity),
|
||||
QIcon::Disabled, QIcon::On);
|
||||
}
|
||||
}
|
||||
//----------
|
||||
|
||||
// For icons intended for menus that are 16x16 in dimensions, to repurpose
|
||||
|
|
Loading…
Reference in a new issue