debdiff *.dsc | filterdiff -p1 -x'po/*.po'

diff -Nru gnome-text-editor-48.2/data/org.gnome.TextEditor.metainfo.xml.in.in gnome-text-editor-48.3/data/org.gnome.TextEditor.metainfo.xml.in.in
--- gnome-text-editor-48.2/data/org.gnome.TextEditor.metainfo.xml.in.in	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/data/org.gnome.TextEditor.metainfo.xml.in.in	2025-05-29 21:10:37.000000000 +0100
@@ -51,6 +51,7 @@
   </supports>
 
   <releases>
+    <release version="48.3" date="2025-05-29"/>
     <release version="48.2" date="2025-03-24"/>
     <release version="48.1" date="2025-03-17"/>
     <release version="48.0" date="2025-03-15"/>
diff -Nru gnome-text-editor-48.2/debian/changelog gnome-text-editor-48.3/debian/changelog
--- gnome-text-editor-48.2/debian/changelog	2025-05-03 08:04:22.000000000 +0100
+++ gnome-text-editor-48.3/debian/changelog	2025-07-14 11:30:05.000000000 +0100
@@ -1,3 +1,34 @@
+gnome-text-editor (48.3-3) unstable; urgency=medium
+
+  * Team upload
+  * Expand description of upstream changes in previous changelog entry
+  * d/watch: Only watch for 48.x releases
+  * d/gbp.conf: Use upstream/48.x branch for trixie
+  * Upload to unstable
+
+ -- Simon McVittie <smcv@debian.org>  Mon, 14 Jul 2025 11:30:05 +0100
+
+gnome-text-editor (48.3-2) experimental; urgency=medium
+
+  * New upstream bugfix release
+    - In tab titles, don't add spaces between non-Latin characters, fixing
+      rendering of e.g. Devanagari
+      (gnome-text-editor#793 upstream)
+    - When showing cursor position, use visual column (e.g. tabs count as
+      multiple spaces and combining characters don't count), rather than
+      simply counting characters
+      (gnome-text-editor#799 upstream)
+    - Delay initialization of gtksourceview until we have a valid app ID,
+      so that unsaved changes can inhibit logout via xdg-desktop-portal
+      as intended
+      (gnome-text-editor#804 upstream)
+    - Update document name in Properties panel after "Save as"
+      (gnome-text-editor#806 upstream)
+    - Fix a memory leak
+    - Translation updates
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 06 Jun 2025 14:47:00 -0400
+
 gnome-text-editor (48.2-2) unstable; urgency=medium
 
   * Team upload
diff -Nru gnome-text-editor-48.2/debian/gbp.conf gnome-text-editor-48.3/debian/gbp.conf
--- gnome-text-editor-48.2/debian/gbp.conf	2025-05-03 06:20:20.000000000 +0100
+++ gnome-text-editor-48.3/debian/gbp.conf	2025-07-14 11:30:05.000000000 +0100
@@ -1,7 +1,7 @@
 [DEFAULT]
 pristine-tar = True
 debian-branch = debian/latest
-upstream-branch = upstream/latest
+upstream-branch = upstream/48.x
 
 [buildpackage]
 sign-tags = True
diff -Nru gnome-text-editor-48.2/debian/watch gnome-text-editor-48.3/debian/watch
--- gnome-text-editor-48.2/debian/watch	2025-05-03 06:20:20.000000000 +0100
+++ gnome-text-editor-48.3/debian/watch	2025-07-14 11:30:05.000000000 +0100
@@ -1,4 +1,4 @@
 version=4
 opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
 https://download.gnome.org/sources/@PACKAGE@/cache.json \
-	[\d.]+/@PACKAGE@-([\d.]+\.?(?:beta|rc)?[\d.]*)@ARCHIVE_EXT@
+	48/@PACKAGE@-([\d.]+\.?(?:beta|rc)?[\d.]*)@ARCHIVE_EXT@
diff -Nru gnome-text-editor-48.2/meson.build gnome-text-editor-48.3/meson.build
--- gnome-text-editor-48.2/meson.build	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/meson.build	2025-05-29 21:10:37.000000000 +0100
@@ -1,5 +1,5 @@
 project('gnome-text-editor', 'c',
-          version: '48.2',
+          version: '48.3',
     meson_version: '>= 0.60.0',
   default_options: [ 'warning_level=2', 'c_std=gnu17' ],
 )
diff -Nru gnome-text-editor-48.2/NEWS gnome-text-editor-48.3/NEWS
--- gnome-text-editor-48.2/NEWS	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/NEWS	2025-05-29 21:10:37.000000000 +0100
@@ -1,3 +1,12 @@
+# Text Editor 48.3
+
+ * Fix visual column position in overlay label
+ * Defer gtk/gsv initialization to GtkApplication startup so that
+   GApplication may determine proper app-id for process without
+   relying on systemd/dbus conventions
+ * Fix name in properties panel after save-as
+ * Translation updates
+
 # Text Editor 48.2
 
  * Break out of recursive Policy-Kit authorization requests from
diff -Nru gnome-text-editor-48.2/po/LINGUAS gnome-text-editor-48.3/po/LINGUAS
--- gnome-text-editor-48.2/po/LINGUAS	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/po/LINGUAS	2025-05-29 21:10:37.000000000 +0100
@@ -47,6 +47,7 @@
 th
 tr
 uk
+uz
 vi
 zh_CN
 zh_TW
diff -Nru gnome-text-editor-48.2/src/editor-application.c gnome-text-editor-48.3/src/editor-application.c
--- gnome-text-editor-48.2/src/editor-application.c	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/src/editor-application.c	2025-05-29 21:10:37.000000000 +0100
@@ -332,6 +332,8 @@
 
   G_APPLICATION_CLASS (editor_application_parent_class)->startup (application);
 
+  gtk_source_init ();
+
   display = gdk_display_get_default ();
   self->recoloring = gtk_css_provider_new ();
   gtk_style_context_add_provider_for_display (display,
diff -Nru gnome-text-editor-48.2/src/editor-document.c gnome-text-editor-48.3/src/editor-document.c
--- gnome-text-editor-48.2/src/editor-document.c	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/src/editor-document.c	2025-05-29 21:10:37.000000000 +0100
@@ -618,6 +618,17 @@
 }
 
 static void
+editor_document_notify_location_cb (EditorDocument *self,
+                                    GParamSpec     *pspec,
+                                    GtkSourceFile  *file)
+{
+  g_assert (EDITOR_IS_DOCUMENT (self));
+  g_assert (GTK_SOURCE_IS_FILE (file));
+
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FILE]);
+}
+
+static void
 editor_document_constructed (GObject *object)
 {
   EditorDocument *self = (EditorDocument *)object;
@@ -902,6 +913,12 @@
   self->file = gtk_source_file_new ();
   self->draft_id = g_uuid_string_random ();
 
+  g_signal_connect_object (self->file,
+                           "notify::location",
+                           G_CALLBACK (editor_document_notify_location_cb),
+                           self,
+                           G_CONNECT_SWAPPED);
+
   g_signal_connect (self,
                     "cursor-moved",
                     G_CALLBACK (editor_document_cursor_moved),
@@ -2203,6 +2220,7 @@
 
       do
         {
+          GUnicodeScript script;
           gunichar ch;
 
           if (count >= TITLE_MAX_LEN)
@@ -2220,7 +2238,10 @@
                 break;
             }
 
-          if (g_unichar_isspace (ch) || !g_unichar_isalnum (ch))
+          script = g_unichar_get_script (ch);
+
+          if (g_unichar_isspace (ch) ||
+              (((script == G_UNICODE_SCRIPT_COMMON) || (script == G_UNICODE_SCRIPT_LATIN)) && !g_unichar_isalnum (ch)))
             {
               if (count > TITLE_LAST_WORD_POS)
                 break;
diff -Nru gnome-text-editor-48.2/src/editor-page.c gnome-text-editor-48.3/src/editor-page.c
--- gnome-text-editor-48.2/src/editor-page.c	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/src/editor-page.c	2025-05-29 21:10:37.000000000 +0100
@@ -284,16 +284,11 @@
 
   if (!_editor_document_get_loading (document))
     {
-      GtkTextMark *insert = gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (document));
-      GtkTextIter iter;
-
-      g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_POSITION_LABEL]);
-
-      gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (document), &iter, insert);
-
+      editor_page_get_visual_position (self, &self->cached_line, &self->cached_visual_column);
       _editor_position_label_set_position (self->position_label,
-                                           gtk_text_iter_get_line (&iter) + 1,
-                                           gtk_text_iter_get_line_offset (&iter) + 1);
+                                           self->cached_line + 1,
+                                           self->cached_visual_column + 1);
+      g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_POSITION_LABEL]);
     }
 }
 
@@ -632,14 +627,15 @@
                                 int        *position,
                                 GtkText    *entry)
 {
+  g_autoptr(GString) str = NULL;
   const char *text;
-  GString *str;
 
   g_assert (EDITOR_IS_PAGE (self));
   g_assert (position != NULL);
   g_assert (GTK_IS_TEXT (entry));
 
   text = gtk_editable_get_text (GTK_EDITABLE (entry));
+
   str = g_string_new (text);
   g_string_insert_len (str, *position, new_text, length);
 
@@ -651,7 +647,7 @@
         continue;
 
       g_signal_stop_emission_by_name (entry, "insert-text");
-      return;
+      break;
     }
 }
 
@@ -1480,17 +1476,14 @@
 gchar *
 editor_page_dup_position_label (EditorPage *self)
 {
-  guint line = 0;
-  guint column = 0;
-
   g_return_val_if_fail (EDITOR_IS_PAGE (self), NULL);
 
   if (_editor_document_get_loading (self->document))
     return NULL;
 
-  editor_page_get_visual_position (self, &line, &column);
-
-  return g_strdup_printf (_("Ln %u, Col %u"), line + 1, column + 1);
+  return g_strdup_printf (_("Ln %u, Col %u"),
+                          self->cached_line + 1,
+                          self->cached_visual_column + 1);
 }
 
 gboolean
diff -Nru gnome-text-editor-48.2/src/editor-page-private.h gnome-text-editor-48.3/src/editor-page-private.h
--- gnome-text-editor-48.2/src/editor-page-private.h	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/src/editor-page-private.h	2025-05-29 21:10:37.000000000 +0100
@@ -63,6 +63,9 @@
   GtkEventController      *vim;
   EditorPositionLabel     *position_label;
 
+  guint                    cached_line;
+  guint                    cached_visual_column;
+
   guint                    queued_hide_position;
 
   guint                    close_requested : 1;
diff -Nru gnome-text-editor-48.2/src/main.c gnome-text-editor-48.3/src/main.c
--- gnome-text-editor-48.2/src/main.c	2025-03-24 21:54:27.000000000 +0000
+++ gnome-text-editor-48.3/src/main.c	2025-05-29 21:10:37.000000000 +0100
@@ -93,9 +93,6 @@
 
   check_early_opts (&argc, &argv, &standalone, &exit_after_startup);
 
-  gtk_init ();
-  gtk_source_init ();
-
   app = _editor_application_new (standalone);
 
   if (exit_after_startup)
