Advertisement
Guest User

theming_patch

a guest
Oct 6th, 2023
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.44 KB | None | 0 0
  1. --- adw-style-manager.c 2023-10-06 14:43:01.839834997 -0600
  2. +++ adw-style-manager-1.c   2023-10-06 15:42:30.413324079 -0600
  3. @@ -227,6 +227,20 @@
  4.    g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HIGH_CONTRAST]);
  5.  }
  6.  
  7. +adw_style_manager_theme_changed(GSettings *settings, const char *key, GdkDisplay *display)
  8. +{
  9. +  char *theme = g_settings_get_string(settings, "gtk-theme");
  10. +  if (!theme) {
  11. +    theme = "Adwaita-empty";
  12. +  }
  13. +  gboolean is_dark_variant = NULL != strstr(theme, "-dark");
  14. +
  15. +  g_object_set (gtk_settings_get_for_display (display),
  16. +                "gtk-theme-name", theme,
  17. +                "gtk-application-prefer-dark-theme", is_dark_variant,
  18. +                NULL);
  19. +}
  20. +
  21.  static void
  22.  adw_style_manager_constructed (GObject *object)
  23.  {
  24. @@ -238,9 +252,6 @@
  25.      GtkSettings *settings = gtk_settings_get_for_display (self->display);
  26.      gboolean prefer_dark_theme;
  27.  
  28. -    g_object_get (settings,
  29. -                  "gtk-application-prefer-dark-theme", &prefer_dark_theme,
  30. -                  NULL);
  31.  
  32.      if (prefer_dark_theme)
  33.        warn_prefer_dark_theme (self);
  34. @@ -255,16 +266,16 @@
  35.        g_object_set (gtk_settings_get_for_display (self->display),
  36.                      "gtk-theme-name", "Adwaita-empty",
  37.                      NULL);
  38. +    
  39. +    GSettingsSchemaSource *schema_source =
  40. +        g_settings_schema_source_get_default();
  41. +    GSettingsSchema *schema = g_settings_schema_source_lookup(
  42. +        schema_source, "org.gnome.desktop.interface", true);
  43. +    GSettings *interface_settings = g_settings_new_full(schema, NULL, NULL);
  44. +
  45. +    adw_style_manager_theme_changed(interface_settings, "gtk-theme", self->display);
  46. +    g_signal_connect (interface_settings, "changed", G_CALLBACK (adw_style_manager_theme_changed), self->display);          
  47.  
  48. -      self->provider = gtk_css_provider_new ();
  49. -      gtk_style_context_add_provider_for_display (self->display,
  50. -                                                  GTK_STYLE_PROVIDER (self->provider),
  51. -                                                  GTK_STYLE_PROVIDER_PRIORITY_THEME);
  52. -
  53. -      self->colors_provider = gtk_css_provider_new ();
  54. -      gtk_style_context_add_provider_for_display (self->display,
  55. -                                                  GTK_STYLE_PROVIDER (self->colors_provider),
  56. -                                                  GTK_STYLE_PROVIDER_PRIORITY_THEME);
  57.      }
  58.  
  59.      self->animations_provider = gtk_css_provider_new ();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement