Daniel
2024-12-06 91274c58b1772dfe38d3fcab291693141e822684
src/core/qwindowkit_windows.h
@@ -22,14 +22,6 @@
#  define GET_Y_LPARAM(lp) (static_cast<int>(static_cast<short>(HIWORD(lp))))
#endif
#ifndef IsMinimized
#  define IsMinimized(hwnd) (::IsIconic(hwnd))
#endif
#ifndef IsMaximized
#  define IsMaximized(hwnd) (::IsZoomed(hwnd))
#endif
#ifndef RECT_WIDTH
#  define RECT_WIDTH(rect) ((rect).right - (rect).left)
#endif
@@ -133,6 +125,9 @@
        QString stringValue(QStringView subKey) const;
        QPair<DWORD, bool> dwordValue(QStringView subKey) const;
        template<typename T>
        std::optional<T> value(QStringView subKey) const;
    private:
        HKEY m_key;
@@ -142,6 +137,33 @@
    inline bool WindowsRegistryKey::isValid() const {
        return m_key != nullptr;
    }
    template<>
    inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const {
        const auto dv = dwordValue(subKey);
        if (!dv.second) {
            return {};
        }
        return dv.first;
    }
#elif QT_VERSION < QT_VERSION_CHECK(6, 8, 1)
    class WindowsRegistryKey : public QWinRegistryKey {
    public:
        explicit WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, REGSAM access = 0);
        template<typename T>
        inline std::optional<T> value(QStringView subKey) const;
    };
    template<>
    inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const {
        const auto dv = dwordValue(subKey);
        if (!dv.second) {
            return {};
        }
        return dv.first;
    }
#else
    using WindowsRegistryKey = QWinRegistryKey;
#endif