diff --git a/build-aux/flatpak/org.gnome.Gtranslator.json b/build-aux/flatpak/org.gnome.Gtranslator.json
index 2c0551c671f581e7301e9ddee9d4e5f415e40715..aaf59b4433ab74d0ca4e85c7dc17d954b325731d 100644
--- a/build-aux/flatpak/org.gnome.Gtranslator.json
+++ b/build-aux/flatpak/org.gnome.Gtranslator.json
@@ -9,6 +9,7 @@
],
"desktop-file-name-suffix" : "(Development) ",
"finish-args" : [
+ "--device=dri",
"--share=ipc",
"--share=network",
"--socket=fallback-x11",
diff --git a/data/org.gnome.Gtranslator.gschema.xml.in b/data/org.gnome.Gtranslator.gschema.xml.in
index 0605235533acfbc162134df6afe8ccd0843e3236..da3467eb7bf157902fcc7d7ab24b9df74659eaea 100644
--- a/data/org.gnome.Gtranslator.gschema.xml.in
+++ b/data/org.gnome.Gtranslator.gschema.xml.in
@@ -105,13 +105,6 @@
Style for switchers in the side panel.
-
- 'classic'
- Color scheme
-
- Name of a gtksourceview color scheme to use for syntax highlighting.
-
-
'id'
Message list sort order
diff --git a/src/codeview/gtr-viewer.c b/src/codeview/gtr-viewer.c
index 418f772d787dca9942d1905c2a44109cf3b662d5..35a5731d3d8997692fbcdbbc664289aecb816c40 100644
--- a/src/codeview/gtr-viewer.c
+++ b/src/codeview/gtr-viewer.c
@@ -47,6 +47,40 @@ struct _GtrViewer
G_DEFINE_TYPE_WITH_PRIVATE (GtrViewer, gtr_viewer, GTK_TYPE_WINDOW)
+static void
+source_view_update_theme (GtrViewer *dlg)
+{
+ AdwStyleManager *manager;
+ GtkSourceStyleSchemeManager *scheme_manager;
+ GtkSourceStyleScheme *scheme;
+ const gchar *scheme_name;
+ GtkSourceView *view;
+ GtkTextBuffer *buffer;
+ GtrViewerPrivate *priv = gtr_viewer_get_instance_private (dlg);
+
+ view = GTK_SOURCE_VIEW (priv->view);
+
+ manager = adw_style_manager_get_default ();
+
+ if (adw_style_manager_get_dark (manager))
+ scheme_name = "Adwaita-dark";
+ else
+ scheme_name = "Adwaita";
+
+ scheme_manager = gtk_source_style_scheme_manager_get_default ();
+ scheme = gtk_source_style_scheme_manager_get_scheme (scheme_manager,
+ scheme_name);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (buffer), scheme);
+}
+
+static void
+notify_dark_cb (GtrViewer *dlg)
+{
+ source_view_update_theme (dlg);
+}
+
static void
gtr_viewer_init (GtrViewer *dlg)
{
@@ -59,6 +93,7 @@ gtr_viewer_init (GtrViewer *dlg)
};
GtrViewerPrivate *priv = gtr_viewer_get_instance_private (dlg);
GError *error = NULL;
+ AdwStyleManager *manager;
gtk_window_set_title (GTK_WINDOW (dlg), _("Source Viewer"));
gtk_window_set_default_size (GTK_WINDOW (dlg), 800, 600);
@@ -99,6 +134,11 @@ gtr_viewer_init (GtrViewer *dlg)
/* Source view */
priv->view = gtk_source_view_new ();
+ source_view_update_theme (dlg);
+ manager = adw_style_manager_get_default ();
+ g_signal_connect_swapped (manager, "notify::dark",
+ G_CALLBACK (notify_dark_cb), dlg);
+
gtk_text_view_set_editable (GTK_TEXT_VIEW (priv->view), FALSE);
gtk_widget_set_visible (priv->view, TRUE);
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), priv->view);
diff --git a/src/codeview/gtr-viewer.ui b/src/codeview/gtr-viewer.ui
index 660fd75a9d3014fe268a7d50c8cf5f068260532f..99a3c25accd34ca726d65bf0450595b9d732d476 100644
--- a/src/codeview/gtr-viewer.ui
+++ b/src/codeview/gtr-viewer.ui
@@ -2,7 +2,6 @@