28 if (emscripten::val::global(
"window").call<emscripten::val>(
30 std::string(
"(prefers-color-scheme:dark)"))[
"matches"].as<
bool>())
31 s_autoColorScheme = Qt::ColorScheme::Dark;
33 s_autoColorScheme = Qt::ColorScheme::Light;
35 for (
auto family : QFontDatabase::families())
36 if (QFontDatabase::isFixedPitch(family))
37 fixedFont =
new QFont(family);
39 m_palette = std::make_unique<QPalette>();
40 m_paletteIsDirty =
true;
42 const auto callback = [=](emscripten::val event) { QWasmTheme::onColorSchemeChange(event); };
43 const emscripten::val window = emscripten::val::global(
"window");
44 if (!window.isUndefined()) {
45 const emscripten::val matchMedia = window.call<emscripten::val>(
"matchMedia", emscripten::val(
"(prefers-color-scheme: dark)"));
46 if (!matchMedia.isUndefined()) {
47 static auto changeEvent =
48 std::make_unique<qstdweb::EventCallback>(matchMedia,
"change", callback);
107 const emscripten::val matches = event[
"matches"];
108 if (!matches.isUndefined()) {
109 const auto oldAutoColorScheme = s_autoColorScheme;
110 if (matches.as<
int>())
111 s_autoColorScheme = Qt::ColorScheme::Dark;
113 s_autoColorScheme = Qt::ColorScheme::Light;
115 if (oldAutoColorScheme != s_autoColorScheme) {
116 s_autoPaletteIsDirty =
true;
117 QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>();