GdkWin32: Detect the high contrast setting
authorLuca Bacci <luca.bacci982@gmail.com>
Fri, 4 Nov 2022 14:54:02 +0000 (15:54 +0100)
committerLuca Bacci <luca.bacci982@gmail.com>
Fri, 4 Nov 2022 14:54:02 +0000 (15:54 +0100)
And set the theme name accordingly ("Default-hc")

gdk/win32/gdkproperty-win32.c

index 9b65b8d86a9f7e20ef7ea389e5f6cd6732cf5c4f..5a5b12253ae15b6d68573a5d4c78839be5b2b8eb 100644 (file)
@@ -147,6 +147,23 @@ _gdk_win32_get_setting (const char *name,
       g_value_set_boolean (value, FALSE);
       return TRUE;
     }
+  else if (strcmp ("gtk-theme-name", name) == 0)
+    {
+      HIGHCONTRASTW hc;
+      memset (&hc, 0, sizeof (hc));
+      hc.cbSize = sizeof (hc);
+      if (API_CALL (SystemParametersInfoW, (SPI_GETHIGHCONTRAST, sizeof (hc), &hc, 0)))
+        {
+          if (hc.dwFlags & HCF_HIGHCONTRASTON)
+            {
+              const char *theme_name = "Default-hc";
+
+              GDK_NOTE(MISC, g_print("gdk_display_get_setting(\"%s\") : %s\n", name, theme_name));
+              g_value_set_string (value, theme_name);
+              return TRUE;
+            }
+        }
+    }
   else if (strcmp ("gtk-xft-antialias", name) == 0)
     {
       GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : 1\n", name));