static void theme_changed (GtkSettings *settings, GParamSpec *pspec, GeditApp *app) { GeditAppPrivate *priv; priv = gedit_app_get_instance_private (app); gchar *theme, *lc_theme, *theme_css; g_object_get (settings, "gtk-theme-name", &theme, NULL); lc_theme = g_ascii_strdown (theme, -1); g_free (theme); theme_css = g_strdup_printf ("gedit.%s.css", lc_theme); g_free (lc_theme); if (priv->theme_provider != NULL) { gtk_style_context_remove_provider_for_screen (gdk_screen_get_default (), GTK_STYLE_PROVIDER (priv->theme_provider)); g_clear_object (&priv->theme_provider); } priv->theme_provider = load_css_from_resource (theme_css, FALSE); g_free (theme_css); }
static void gedit_app_dispose (GObject *object) { GeditAppPrivate *priv; priv = gedit_app_get_instance_private (GEDIT_APP (object)); g_clear_object (&priv->ui_settings); g_clear_object (&priv->window_settings); g_clear_object (&priv->settings); g_clear_object (&priv->page_setup); g_clear_object (&priv->print_settings); /* Note that unreffing the extensions will automatically remove * all extensions which in turn will deactivate the extension */ g_clear_object (&priv->extensions); g_clear_object (&priv->engine); if (priv->theme_provider != NULL) { gtk_style_context_remove_provider_for_screen (gdk_screen_get_default (), GTK_STYLE_PROVIDER (priv->theme_provider)); g_clear_object (&priv->theme_provider); } g_clear_object (&priv->window_menu); g_clear_object (&priv->notebook_menu); g_clear_object (&priv->tab_width_menu); g_clear_object (&priv->line_col_menu); G_OBJECT_CLASS (gedit_app_parent_class)->dispose (object); }
static VALUE rg_remove_provider(VALUE self, VALUE provider) { gtk_style_context_remove_provider_for_screen(_SELF(self), RVAL2GTKSTYLEPROVIDER(provider)); return self; }
static void remove_extra_css (GtkStyleProvider *provider) { if (provider == NULL) return; gtk_style_context_remove_provider_for_screen (gdk_screen_get_default (), provider); }
static void ide_keybindings_unload_plugin (IdeKeybindings *self, PeasPluginInfo *plugin_info, PeasEngine *engine) { GtkStyleProvider *provider; const gchar *module_name; g_assert (IDE_IS_KEYBINDINGS (self)); g_assert (plugin_info != NULL); g_assert (PEAS_IS_ENGINE (engine)); if (self->plugin_providers == NULL) return; module_name = peas_plugin_info_get_module_name (plugin_info); provider = g_hash_table_lookup (self->plugin_providers, module_name); if (provider == NULL) return; gtk_style_context_remove_provider_for_screen (gdk_screen_get_default (), provider); g_hash_table_remove (self->plugin_providers, module_name); }
static void ide_keybindings_reload (IdeKeybindings *self) { GdkScreen *screen; PeasEngine *engine; const GList *list; IDE_ENTRY; g_assert (IDE_IS_KEYBINDINGS (self)); { g_autofree gchar *path = NULL; g_autoptr(GBytes) bytes = NULL; g_autoptr(GError) error = NULL; if (self->mode == NULL) self->mode = g_strdup ("default"); IDE_TRACE_MSG ("Loading %s keybindings", self->mode); path = g_strdup_printf ("/org/gnome/builder/keybindings/%s.css", self->mode); bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error); if (error == NULL) { /* * We use -1 for the length so that the CSS provider knows that the * string is \0 terminated. This is guaranteed to us by GResources so * that interned data can be used as C strings. */ gtk_css_provider_load_from_data (self->css_provider, g_bytes_get_data (bytes, NULL), -1, &error); } if (error) g_warning ("%s", error->message); } engine = peas_engine_get_default (); screen = gdk_screen_get_default (); if (self->plugin_providers != NULL) { GHashTableIter iter; GtkStyleProvider *provider; g_hash_table_iter_init (&iter, self->plugin_providers); while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&provider)) gtk_style_context_remove_provider_for_screen (screen, provider); g_clear_pointer (&self->plugin_providers, g_hash_table_unref); } self->plugin_providers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); list = peas_engine_get_plugin_list (engine); for (; list != NULL; list = list->next) { PeasPluginInfo *plugin_info = list->data; if (!peas_plugin_info_is_loaded (plugin_info)) continue; ide_keybindings_load_plugin (self, plugin_info, engine); } IDE_EXIT; }