diff --git a/src/core/framelesshelpercore.qrc b/src/core/framelesshelpercore.qrc
index ef68a8d..af9ba55 100644
--- a/src/core/framelesshelpercore.qrc
+++ b/src/core/framelesshelpercore.qrc
@@ -1,7 +1,5 @@
- resources/fonts/Segoe Fluent Icons.ttf
- resources/fonts/Segoe MDL2 Assets.ttf
resources/fonts/Micon.ttf
diff --git a/src/core/framelessmanager.cpp b/src/core/framelessmanager.cpp
index 58d7d5f..d0731de 100644
--- a/src/core/framelessmanager.cpp
+++ b/src/core/framelessmanager.cpp
@@ -59,37 +59,26 @@ Q_GLOBAL_STATIC(FramelessManagerHelper, g_helper)
Q_GLOBAL_STATIC(FramelessManager, g_manager)
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontResourcePrefix, ":/org.wangwenx190.FramelessHelper/resources/fonts/")
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontFileName_win11, "Segoe Fluent Icons.ttf")
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontFileName_win, "Segoe MDL2 Assets.ttf")
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontFileName_unix, "Micon.ttf")
+FRAMELESSHELPER_STRING_CONSTANT2(IconFontFilePath, ":/org.wangwenx190.FramelessHelper/resources/fonts/Micon.ttf")
FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_win11, "Segoe Fluent Icons")
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_win, "Segoe MDL2 Assets")
-FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_unix, "micon_nb")
+FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_win10, "Segoe MDL2 Assets")
+FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_common, "micon_nb")
static constexpr const int kIconFontPointSize = 8;
-[[nodiscard]] static inline QString iconFontFilePath()
-{
- static const QString result = []() -> QString {
-#ifdef Q_OS_WINDOWS
- static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
- return (kIconFontResourcePrefix + (isWin11OrGreater ? kIconFontFileName_win11 : kIconFontFileName_win));
-#else
- return (kIconFontResourcePrefix + kIconFontFileName_unix);
-#endif
- }();
- return result;
-}
-
[[nodiscard]] static inline QString iconFontFamilyName()
{
static const QString result = []() -> QString {
#ifdef Q_OS_WINDOWS
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
- return (isWin11OrGreater ? kIconFontFamilyName_win11 : kIconFontFamilyName_win);
-#else
- return kIconFontFamilyName_unix;
+ if (isWin11OrGreater) {
+ return kIconFontFamilyName_win11;
+ }
+ static const bool isWin10OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1507);
+ if (isWin10OrGreater) {
+ return kIconFontFamilyName_win10;
+ }
#endif
+ return kIconFontFamilyName_common;
}();
return result;
}
@@ -132,9 +121,9 @@ void FramelessManagerPrivate::initializeIconFont()
}
inited = true;
initResource();
- const int id = QFontDatabase::addApplicationFont(iconFontFilePath());
+ const int id = QFontDatabase::addApplicationFont(kIconFontFilePath);
if (id < 0) {
- qWarning() << "Failed to load icon font:" << iconFontFilePath();
+ qWarning() << "Failed to load icon font:" << kIconFontFilePath;
} else {
qDebug() << "Successfully registered icon font:" << QFontDatabase::applicationFontFamilies(id);
}
@@ -261,7 +250,8 @@ void FramelessManagerPrivate::initialize()
#endif
}
-FramelessManager::FramelessManager(QObject *parent) : QObject(parent), d_ptr(new FramelessManagerPrivate(this))
+FramelessManager::FramelessManager(QObject *parent) :
+ QObject(parent), d_ptr(new FramelessManagerPrivate(this))
{
}
diff --git a/src/core/resources/fonts/Segoe Fluent Icons.ttf b/src/core/resources/fonts/Segoe Fluent Icons.ttf
deleted file mode 100644
index 8f05a4b..0000000
Binary files a/src/core/resources/fonts/Segoe Fluent Icons.ttf and /dev/null differ
diff --git a/src/core/resources/fonts/Segoe MDL2 Assets.ttf b/src/core/resources/fonts/Segoe MDL2 Assets.ttf
deleted file mode 100644
index 066f108..0000000
Binary files a/src/core/resources/fonts/Segoe MDL2 Assets.ttf and /dev/null differ
diff --git a/src/core/utils.cpp b/src/core/utils.cpp
index 5faff8b..782c125 100644
--- a/src/core/utils.cpp
+++ b/src/core/utils.cpp
@@ -38,8 +38,8 @@ using namespace Global;
struct FONT_ICON
{
- quint32 win = 0;
- quint32 unix = 0;
+ quint32 segoe = 0;
+ quint32 micon = 0;
};
static const QHash g_fontIconsTable = {
@@ -123,16 +123,22 @@ Qt::Edges Utils::calculateWindowEdges(const QWindow *window, const QPoint &pos)
QString Utils::getSystemButtonIconCode(const SystemButtonType button)
{
- if (!g_fontIconsTable.contains(static_cast(button))) {
+ const auto index = static_cast(button);
+ if (!g_fontIconsTable.contains(index)) {
qWarning() << "FIXME: Add FONT_ICON value for button" << button;
return {};
}
- const FONT_ICON icon = g_fontIconsTable.value(static_cast(button));
+ const FONT_ICON icon = g_fontIconsTable.value(index);
#ifdef Q_OS_WINDOWS
- return QChar(icon.win);
-#else
- return QChar(icon.unix);
+ // Windows 11: Segoe Fluent Icons (https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font)
+ // Windows 10: Segoe MDL2 Assets (https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font)
+ // Windows 7~8.1: Micon (http://xtoolkit.github.io/Micon/)
+ static const bool isWin10OrGreater = isWindowsVersionOrGreater(WindowsVersion::_10_1507);
+ if (isWin10OrGreater) {
+ return QChar(icon.segoe);
+ }
#endif
+ return QChar(icon.micon);
}
QWindow *Utils::findWindow(const WId windowId)