Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xviewer-plugins for openSUSE:Factory 
checked in at 2026-10-07 19:32:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xviewer-plugins (Old)
 and      /work/SRC/openSUSE:Factory/.xviewer-plugins.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xviewer-plugins"

Wed Oct  7 19:32:32 2026 rev:9 rq:1383022 version:3.4.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/xviewer-plugins/xviewer-plugins.changes  
2026-04-18 21:35:17.490914162 +0200
+++ 
/work/SRC/openSUSE:Factory/.xviewer-plugins.new.3698736/xviewer-plugins.changes 
    2026-10-07 19:33:06.987921558 +0200
@@ -1,0 +2,8 @@
+Tue Oct  6 20:36:34 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.4.4:
+  * map plugin: Replace libchamplain with osm-gps-map.
+- remove empty light-theme plugin subpackage
+- fix suggests and buildrequires
+
+-------------------------------------------------------------------
@@ -17 +25 @@
-- udate to 3.4.0:
+- update to 3.4.0:

Old:
----
  xviewer-plugins-3.4.3.tar.gz

New:
----
  xviewer-plugins-3.4.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xviewer-plugins.spec ++++++
--- /var/tmp/diff_new_pack.HRYTfz/_old  2026-10-07 19:33:07.715951963 +0200
+++ /var/tmp/diff_new_pack.HRYTfz/_new  2026-10-07 19:33:07.716952005 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           xviewer-plugins
-Version:        3.4.3
+Version:        3.4.4
 Release:        0
 Summary:        A collection of plugins for xviewer
 License:        GPL-2.0-or-later
@@ -27,23 +27,20 @@
 BuildRequires:  fdupes
 BuildRequires:  meson
 BuildRequires:  pkgconfig
-BuildRequires:  pkgconfig(champlain-gtk-0.12)
-BuildRequires:  pkgconfig(clutter-1.0) >= 1.9.4
-BuildRequires:  pkgconfig(clutter-gtk-1.0) >= 1.1.2
 BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
 BuildRequires:  pkgconfig(gtk+-3.0) >= 3.10.0
 BuildRequires:  pkgconfig(libexif) >= 0.6.16
 BuildRequires:  pkgconfig(libpeas-1.0) >= 0.7.4
 BuildRequires:  pkgconfig(libpeas-gtk-1.0) >= 1.12.0
+BuildRequires:  pkgconfig(osmgpsmap-1.0)
 BuildRequires:  pkgconfig(xviewer) >= 3.2.1
 Requires:       xviewer
 Suggests:       xviewer-plugin-exif-display
-Suggests:       xviewer-plugin-exif-export-to-folder
-Suggests:       xviewer-plugin-exif-light-theme
-Suggests:       xviewer-plugin-exif-map
-Suggests:       xviewer-plugin-exif-pythonconsole
-Suggests:       xviewer-plugin-exif-send-by-mail
-Suggests:       xviewer-plugin-exif-slideshowshuffle
+Suggests:       xviewer-plugin-export-to-folder
+Suggests:       xviewer-plugin-map
+Suggests:       xviewer-plugin-pythonconsole
+Suggests:       xviewer-plugin-send-by-mail
+Suggests:       xviewer-plugin-slideshowshuffle
 Enhances:       xviewer
 
 %description
@@ -71,13 +68,6 @@
 %description -n xviewer-plugin-export-to-folder
 xviewer export to directory plugin
 
-%package -n xviewer-plugin-light-theme
-Summary:        Xviewer light-theme plugin
-Requires:       %{name}-data = %{version}
-
-%description -n xviewer-plugin-light-theme
-xviewer Light Theme plugin
-
 %package -n xviewer-plugin-map
 Summary:        Xviewer map plugin
 Requires:       %{name}-data = %{version}
@@ -122,8 +112,8 @@
 %fdupes %{buildroot}
 
 %files
-%license COPYING README.md
-%doc NEWS xviewer-plugins.SUSE
+%license COPYING
+%doc README.md NEWS xviewer-plugins.SUSE
 
 %files -n %{name}-data
 %license COPYING
@@ -143,8 +133,6 @@
 %{_datadir}/glib-2.0/schemas/org.x.viewer.plugins.export-to-folder.gschema.xml
 %{_prefix}/lib/xviewer/plugins/export-to-folder.{py,plugin}
 
-%files -n xviewer-plugin-light-theme
-
 %files -n xviewer-plugin-map
 %{_datadir}/metainfo/xviewer-map.metainfo.xml
 %{_prefix}/lib/xviewer/plugins/{map.plugin,libmap.so}

++++++ xviewer-plugins-3.4.3.tar.gz -> xviewer-plugins-3.4.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xviewer-plugins-3.4.3/debian/changelog 
new/xviewer-plugins-3.4.4/debian/changelog
--- old/xviewer-plugins-3.4.3/debian/changelog  2025-11-21 15:21:27.000000000 
+0100
+++ new/xviewer-plugins-3.4.4/debian/changelog  2026-07-02 13:33:11.000000000 
+0200
@@ -1,3 +1,10 @@
+xviewer-plugins (3.4.4) alfa; urgency=medium
+
+  [ Michael Webster ]
+  * map plugin: Replace libchamplain with osm-gps-map.
+
+ -- Clement Lefebvre <[email protected]>  Thu, 02 Jul 2026 13:33:03 +0200
+
 xviewer-plugins (3.4.3) zena; urgency=medium
 
   * Switch to XApp symbolic icons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xviewer-plugins-3.4.3/debian/control 
new/xviewer-plugins-3.4.4/debian/control
--- old/xviewer-plugins-3.4.3/debian/control    2025-11-21 15:21:27.000000000 
+0100
+++ new/xviewer-plugins-3.4.4/debian/control    2026-07-02 13:33:11.000000000 
+0200
@@ -7,10 +7,7 @@
                gettext,
                gsettings-desktop-schemas-dev,
                libcinnamon-desktop-dev (>=3.2.0),
-               libchamplain-0.12-dev,
-               libchamplain-gtk-0.12-dev,
-               libclutter-1.0-dev (>= 1.9.4),
-               libclutter-gtk-1.0-dev (>= 1.1.2),
+               libosmgpsmap-1.0-dev,
                liblcms2-dev,
                libexempi-dev,
                libexif-dev (>= 0.6.16),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xviewer-plugins-3.4.3/meson.build 
new/xviewer-plugins-3.4.4/meson.build
--- old/xviewer-plugins-3.4.3/meson.build       2025-11-21 15:21:27.000000000 
+0100
+++ new/xviewer-plugins-3.4.4/meson.build       2026-07-02 13:33:11.000000000 
+0200
@@ -1,4 +1,4 @@
-project('xviewer-plugins', 'c', version : '3.4.3')
+project('xviewer-plugins', 'c', version : '3.4.4')
 
 gnome = import('gnome')
 i18n = import('i18n')
@@ -24,10 +24,7 @@
 plugin_libdir =  prefix / 'lib' / 'xviewer' / 'plugins'
 plugin_datadir = prefix / datadir / 'xviewer' / 'plugins'
 
-champlain = dependency('champlain-0.12')
-champlain_gtk = dependency('champlain-gtk-0.12')
-clutter = dependency('clutter-1.0', version: '>=1.9.4')
-clutter_gtk = dependency('clutter-gtk-1.0', version: '>=1.1.2')
+osmgpsmap = dependency('osmgpsmap-1.0', version: '>=1.1.0')
 exif = dependency('libexif', version: '>=0.6.16')
 glib = dependency('glib-2.0', version: '>=2.32.0')
 gtk = dependency('gtk+-3.0', version: '>=3.3.8')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xviewer-plugins-3.4.3/plugins/map/meson.build 
new/xviewer-plugins-3.4.4/plugins/map/meson.build
--- old/xviewer-plugins-3.4.3/plugins/map/meson.build   2025-11-21 
15:21:27.000000000 +0100
+++ new/xviewer-plugins-3.4.4/plugins/map/meson.build   2026-07-02 
13:33:11.000000000 +0200
@@ -24,7 +24,7 @@
 shared_library(
     plugin_name,
     'xviewer-map-plugin.c',
-    dependencies: [config_h, champlain_gtk, clutter_gtk, exif, glib, gtk, 
libpeas, xviewer],
+    dependencies: [config_h, osmgpsmap, exif, glib, gtk, libpeas, xviewer],
     install: true,
     install_dir: plugin_libdir,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xviewer-plugins-3.4.3/plugins/map/xviewer-map-plugin.c 
new/xviewer-plugins-3.4.4/plugins/map/xviewer-map-plugin.c
--- old/xviewer-plugins-3.4.3/plugins/map/xviewer-map-plugin.c  2025-11-21 
15:21:27.000000000 +0100
+++ new/xviewer-plugins-3.4.4/plugins/map/xviewer-map-plugin.c  2026-07-02 
13:33:11.000000000 +0200
@@ -20,9 +20,7 @@
 
 #include <math.h>
 #include <string.h>
-#include <champlain/champlain.h>
-#include <champlain-gtk/champlain-gtk.h>
-#include <clutter-gtk/clutter-gtk.h>
+#include <osm-gps-map.h>
 #include <libexif/exif-data.h>
 #include <libexif/exif-tag.h>
 
@@ -39,16 +37,14 @@
                 G_IMPLEMENT_INTERFACE_DYNAMIC (XVIEWER_TYPE_WINDOW_ACTIVATABLE,
                                         xviewer_window_activatable_iface_init))
 
-#define FACTOR 2.0
+#define MARKER_ICON_SMALL 16
+#define MARKER_ICON_LARGE 24
+#define MARKER_HIT_RADIUS_PX 16
 
 static void
 xviewer_map_plugin_init (XviewerMapPlugin *plugin)
 {
        xviewer_debug_message (DEBUG_PLUGINS, "XviewerMapPlugin initializing");
-       if (gtk_clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS)
-       {
-               g_warning ("XviewerMapPlugin: gtk_clutter_init failed!");
-       }
 }
 
 static void
@@ -59,36 +55,27 @@
        G_OBJECT_CLASS (xviewer_map_plugin_parent_class)->finalize (object);
 }
 
-static void
-update_marker_image (ChamplainLabel *marker,
-                     GtkIconSize size)
+static GdkPixbuf *
+load_marker_pixbuf (gint size)
 {
-       GtkWidget *widget;
-       ClutterActor *thumb;
+       GtkIconTheme *theme = gtk_icon_theme_get_default ();
+       GdkPixbuf *pixbuf = NULL;
 
-       widget = gtk_button_new ();
-       thumb = gtk_clutter_texture_new ();
-       if (G_UNLIKELY (!gtk_clutter_texture_set_from_icon_name 
(GTK_CLUTTER_TEXTURE (thumb),
-                                                                widget,
-                                                                
"mark-location",
-                                                                size, NULL)))
-       {
-               /* mark-location doesn't appear to be a "standard" icon yet,
-                * so try falling back to image-x-generic as before if
-                * it is not available */
-               if (G_UNLIKELY (!gtk_clutter_texture_set_from_icon_name 
(GTK_CLUTTER_TEXTURE (thumb),
-                                                                        widget,
-                                                                        
"image-x-generic",
-                                                                        size, 
NULL)))
-               {
-                       g_warning ("Could not load icon for map marker. "
-                                  "Please install a suitable icon theme!");
-               }
+       pixbuf = gtk_icon_theme_load_icon (theme, "mark-location", size,
+                                          GTK_ICON_LOOKUP_FORCE_SIZE, NULL);
+       if (pixbuf == NULL) {
+               pixbuf = gtk_icon_theme_load_icon (theme, "image-x-generic",
+                                                  size,
+                                                  GTK_ICON_LOOKUP_FORCE_SIZE,
+                                                  NULL);
        }
 
-       /* don't need to unref widget because it is floating */
+       if (pixbuf == NULL) {
+               g_warning ("Could not load icon for map marker. "
+                          "Please install a suitable icon theme!");
+       }
 
-       champlain_label_set_image (marker, thumb);
+       return pixbuf;
 }
 
 #define MAP_EXIF_ENTRY_IS_GPS_RATIONAL(e) ( e && \
@@ -190,22 +177,118 @@
        return FALSE;
 }
 
-static gboolean
-change_image (ChamplainLabel *marker,
-             ClutterEvent *event,
-             XviewerMapPlugin *plugin)
+static void
+get_marker_coords (OsmGpsMapImage *marker,
+                   gdouble *lat,
+                   gdouble *lon)
+{
+       const OsmGpsMapPoint *pt;
+       float flat = 0.0f, flon = 0.0f;
+
+       pt = osm_gps_map_image_get_point (marker);
+       if (pt) {
+               osm_gps_map_point_get_degrees ((OsmGpsMapPoint *) pt,
+                                              &flat, &flon);
+       }
+       *lat = (gdouble) flat;
+       *lon = (gdouble) flon;
+}
+
+static OsmGpsMapImage *
+replace_marker_pixbuf (XviewerMapPlugin *plugin,
+                       OsmGpsMapImage   *marker,
+                       GdkPixbuf        *pixbuf)
 {
        XviewerImage *image;
+       OsmGpsMapImage *new_marker;
+       gdouble lat, lon;
+
+       if (!marker || !pixbuf)
+               return marker;
 
        image = g_object_get_data (G_OBJECT (marker), "image");
+       get_marker_coords (marker, &lat, &lon);
+
+       plugin->markers = g_list_remove (plugin->markers, marker);
+       if (image)
+               g_object_set_data (G_OBJECT (image), "marker", NULL);
+       osm_gps_map_image_remove (plugin->map, marker);
+
+       new_marker = osm_gps_map_image_add_with_alignment (plugin->map,
+                                                          (float) lat,
+                                                          (float) lon,
+                                                          pixbuf,
+                                                          0.5f, 1.0f);
+       if (image) {
+               g_object_set_data (G_OBJECT (new_marker), "image", image);
+               g_object_set_data_full (G_OBJECT (image), "marker",
+                                       new_marker, NULL);
+       }
+       plugin->markers = g_list_prepend (plugin->markers, new_marker);
+
+       return new_marker;
+}
+
+static OsmGpsMapImage *
+find_marker_at_event (XviewerMapPlugin *plugin,
+                      GdkEventButton   *event)
+{
+       GList *l;
+       gint best_dist2 = MARKER_HIT_RADIUS_PX * MARKER_HIT_RADIUS_PX;
+       OsmGpsMapImage *best = NULL;
+
+       for (l = plugin->markers; l != NULL; l = l->next) {
+               OsmGpsMapImage *m = l->data;
+               const OsmGpsMapPoint *pt;
+               OsmGpsMapPoint tmp;
+               gint x = 0, y = 0, dx, dy, d2;
+               float flat = 0.0f, flon = 0.0f;
+
+               pt = osm_gps_map_image_get_point (m);
+               if (!pt)
+                       continue;
+
+               osm_gps_map_point_get_degrees ((OsmGpsMapPoint *) pt,
+                                              &flat, &flon);
+               osm_gps_map_point_set_degrees (&tmp, flat, flon);
+               osm_gps_map_convert_geographic_to_screen (plugin->map,
+                                                         &tmp, &x, &y);
+
+               dx = (gint) event->x - x;
+               dy = (gint) event->y - y;
+               d2 = dx * dx + dy * dy;
+               if (d2 < best_dist2) {
+                       best_dist2 = d2;
+                       best = m;
+               }
+       }
 
+       return best;
+}
+
+static gboolean
+map_button_press_cb (GtkWidget        *widget,
+                     GdkEventButton   *event,
+                     XviewerMapPlugin *plugin)
+{
+       OsmGpsMapImage *marker;
+       XviewerImage *image;
+
+       if (event->button != GDK_BUTTON_PRIMARY ||
+           event->type != GDK_BUTTON_PRESS)
+               return FALSE;
+
+       marker = find_marker_at_event (plugin, event);
+       if (!marker)
+               return FALSE;
+
+       image = g_object_get_data (G_OBJECT (marker), "image");
        if (!image)
                return FALSE;
 
        xviewer_thumb_view_set_current_image (XVIEWER_THUMB_VIEW 
(plugin->thumbview),
-                                         image, TRUE);
-
-       return FALSE;
+                                         image, TRUE);
+       return TRUE;
 }
 
 static void
@@ -222,24 +305,21 @@
                return;
 
        if (get_coordinates (image, &lat, &lon)) {
-               ChamplainLabel *marker;
+               OsmGpsMapImage *marker;
 
-               marker = CHAMPLAIN_LABEL (champlain_label_new ());
-               champlain_label_set_draw_background (CHAMPLAIN_LABEL (marker), 
FALSE);
-               update_marker_image (marker, GTK_ICON_SIZE_MENU);
+               if (!plugin->icon_small)
+                       return;
 
-               g_object_set_data_full (G_OBJECT (image), "marker", marker, 
(GDestroyNotify) clutter_actor_destroy);
-               g_object_set_data (G_OBJECT (marker), "image", image);
+               marker = osm_gps_map_image_add_with_alignment (plugin->map,
+                                                              (float) lat,
+                                                              (float) lon,
+                                                              
plugin->icon_small,
+                                                              0.5f, 1.0f);
 
-               champlain_location_set_location (CHAMPLAIN_LOCATION (marker),
-                                                   lat,
-                                                   lon);
-               champlain_marker_layer_add_marker (plugin->layer, 
CHAMPLAIN_MARKER (marker));
-
-               g_signal_connect (marker,
-                                 "button-release-event",
-                                 G_CALLBACK (change_image),
-                                 plugin);
+               g_object_set_data (G_OBJECT (marker), "image", image);
+               g_object_set_data_full (G_OBJECT (image), "marker",
+                                       marker, NULL);
+               plugin->markers = g_list_prepend (plugin->markers, marker);
        }
 
 }
@@ -249,7 +329,7 @@
                      XviewerMapPlugin *plugin)
 {
        XviewerImage *image;
-       ChamplainLabel *marker;
+       OsmGpsMapImage *marker;
 
        if (!xviewer_thumb_view_get_n_selected (view))
                return;
@@ -263,29 +343,29 @@
        if (marker) {
                gdouble lat, lon;
 
-               g_object_get (marker,
-                             "latitude", &lat,
-                             "longitude", &lon,
-                             NULL);
-
-               champlain_view_go_to (CHAMPLAIN_VIEW (plugin->map),
-                                     lat,
-                                     lon);
+               get_marker_coords (marker, &lat, &lon);
+               osm_gps_map_set_center (plugin->map,
+                                       (float) lat, (float) lon);
 
                /* Reset the previous selection */
-               if (plugin->marker)
-                       update_marker_image (plugin->marker, 
GTK_ICON_SIZE_MENU);
+               if (plugin->marker && plugin->marker != marker) {
+                       replace_marker_pixbuf (plugin, plugin->marker,
+                                              plugin->icon_small);
+               }
 
-               plugin->marker = marker;
-               update_marker_image (plugin->marker, 
GTK_ICON_SIZE_LARGE_TOOLBAR);
+               /* Highlight new selection */
+               plugin->marker = replace_marker_pixbuf (plugin, marker,
+                                                       plugin->icon_large);
                gtk_widget_set_sensitive (plugin->jump_to_button, TRUE);
        }
        else {
                gtk_widget_set_sensitive (plugin->jump_to_button, FALSE);
 
                /* Reset the previous selection */
-               if (plugin->marker)
-                       update_marker_image (plugin->marker, 
GTK_ICON_SIZE_MENU);
+               if (plugin->marker) {
+                       replace_marker_pixbuf (plugin, plugin->marker,
+                                              plugin->icon_small);
+               }
 
                plugin->marker = NULL;
        }
@@ -297,33 +377,27 @@
 jump_to (GtkWidget *widget,
         XviewerMapPlugin *plugin)
 {
+       gdouble lat, lon;
+
        if (!plugin->marker)
                return;
 
-       gdouble lat, lon;
-
-       g_object_get (plugin->marker,
-                     "latitude", &lat,
-                     "longitude", &lon,
-                     NULL);
-
-       champlain_view_go_to (CHAMPLAIN_VIEW (plugin->map),
-                             lat,
-                             lon);
+       get_marker_coords (plugin->marker, &lat, &lon);
+       osm_gps_map_set_center (plugin->map, (float) lat, (float) lon);
 }
 
 static void
 zoom_in (GtkWidget *widget,
-        ChamplainView *view)
+        XviewerMapPlugin *plugin)
 {
-       champlain_view_zoom_in (view);
+       osm_gps_map_zoom_in (plugin->map);
 }
 
 static void
 zoom_out (GtkWidget *widget,
-         ChamplainView *view)
+         XviewerMapPlugin *plugin)
 {
-       champlain_view_zoom_out (view);
+       osm_gps_map_zoom_out (plugin->map);
 }
 
 static gboolean
@@ -349,11 +423,41 @@
 }
 
 static void
+fit_all_markers (XviewerMapPlugin *plugin)
+{
+       GList *l;
+       gdouble min_lat = 90.0, max_lat = -90.0;
+       gdouble min_lon = 180.0, max_lon = -180.0;
+       gboolean any = FALSE;
+
+       for (l = plugin->markers; l != NULL; l = l->next) {
+               gdouble lat, lon;
+               get_marker_coords (l->data, &lat, &lon);
+               if (lat < min_lat) min_lat = lat;
+               if (lat > max_lat) max_lat = lat;
+               if (lon < min_lon) min_lon = lon;
+               if (lon > max_lon) max_lon = lon;
+               any = TRUE;
+       }
+
+       if (!any)
+               return;
+
+       if (min_lat == max_lat && min_lon == max_lon) {
+               osm_gps_map_set_center_and_zoom (plugin->map,
+                                                (float) min_lat,
+                                                (float) min_lon, 15);
+       } else {
+               osm_gps_map_zoom_fit_bbox (plugin->map,
+                                          (float) min_lat, (float) max_lat,
+                                          (float) min_lon, (float) max_lon);
+       }
+}
+
+static void
 prepared_cb (XviewerWindow *window,
             XviewerMapPlugin *plugin)
 {
-       GList *markers;
-
        plugin->store = xviewer_window_get_store (plugin->window);
 
        if (!plugin->store)
@@ -380,17 +484,7 @@
         */
        selection_changed_cb (XVIEWER_THUMB_VIEW (plugin->thumbview), plugin);
 
-       /* zoom in and the be sure that all markers are visible.
-        * This is useful to have a good starting zoom level where
-        * you can see a available markers on the map
-        */
-       markers = champlain_marker_layer_get_markers (plugin->layer);
-       if(markers != NULL)
-       {
-               champlain_view_set_zoom_level (plugin->map, 15);
-               champlain_view_ensure_layers_visible (plugin->map, FALSE);
-               g_list_free (markers);
-       }
+       fit_all_markers (plugin);
 }
 
 static void
@@ -398,33 +492,27 @@
 {
        XviewerMapPlugin *plugin = XVIEWER_MAP_PLUGIN (activatable);
        GtkWidget *sidebar, *vbox, *bbox, *button, *viewport;
-       GtkWidget *embed;
-       ClutterActor *scale;
 
        xviewer_debug (DEBUG_PLUGINS);
 
-       /* This is a workaround until bug 590692 is fixed. */
+       plugin->icon_small = load_marker_pixbuf (MARKER_ICON_SMALL);
+       plugin->icon_large = load_marker_pixbuf (MARKER_ICON_LARGE);
+
        viewport = gtk_frame_new (NULL);
        gtk_frame_set_shadow_type (GTK_FRAME (viewport), GTK_SHADOW_ETCHED_IN);
-       /*viewport = gtk_viewport_new (NULL, NULL);
-       gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport),
-                                     GTK_SHADOW_ETCHED_IN);*/
 
-       embed = gtk_champlain_embed_new ();
-       plugin->map = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED 
(embed));
+       plugin->map = OSM_GPS_MAP (osm_gps_map_new ());
        g_object_set (G_OBJECT (plugin->map),
-               "zoom-level", 3,
-               "kinetic-mode", TRUE,
-               "goto-animation-duration", 1000,
-               NULL);
-       scale = champlain_scale_new ();
-       champlain_scale_connect_view (CHAMPLAIN_SCALE (scale), plugin->map);
-       /* align to the bottom left */
-       champlain_view_bin_layout_add (plugin->map, scale,
-               CLUTTER_BIN_ALIGNMENT_START,
-               CLUTTER_BIN_ALIGNMENT_END);
+                     "map-source", OSM_GPS_MAP_SOURCE_OPENSTREETMAP,
+                     NULL);
+       osm_gps_map_set_zoom (plugin->map, 3);
+
+       plugin->button_press_id = g_signal_connect (plugin->map,
+                                                   "button-press-event",
+                                                   G_CALLBACK 
(map_button_press_cb),
+                                                   plugin);
 
-       gtk_container_add (GTK_CONTAINER (viewport), embed);
+       gtk_container_add (GTK_CONTAINER (viewport), GTK_WIDGET (plugin->map));
 
        vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        bbox = gtk_toolbar_new ();
@@ -448,7 +536,7 @@
        g_signal_connect (button,
                          "clicked",
                          G_CALLBACK (zoom_in),
-                         plugin->map);
+                         plugin);
        gtk_container_add (GTK_CONTAINER (bbox), button);
 
        button = GTK_WIDGET (gtk_tool_button_new (NULL, NULL));
@@ -457,12 +545,9 @@
        g_signal_connect (button,
                          "clicked",
                          G_CALLBACK (zoom_out),
-                         plugin->map);
+                         plugin);
        gtk_container_add (GTK_CONTAINER (bbox), button);
 
-       plugin->layer = champlain_marker_layer_new_full 
(CHAMPLAIN_SELECTION_SINGLE);
-       champlain_view_add_layer (CHAMPLAIN_VIEW (plugin->map), CHAMPLAIN_LAYER 
(plugin->layer));
-
        sidebar = xviewer_window_get_sidebar (plugin->window);
        plugin->viewport = vbox;
        gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
@@ -503,6 +588,12 @@
                plugin->win_prepared_id = 0;
        }
 
+       g_list_free (plugin->markers);
+       plugin->markers = NULL;
+       plugin->marker = NULL;
+
+       g_clear_object (&plugin->icon_small);
+       g_clear_object (&plugin->icon_large);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xviewer-plugins-3.4.3/plugins/map/xviewer-map-plugin.h 
new/xviewer-plugins-3.4.4/plugins/map/xviewer-map-plugin.h
--- old/xviewer-plugins-3.4.3/plugins/map/xviewer-map-plugin.h  2025-11-21 
15:21:27.000000000 +0100
+++ new/xviewer-plugins-3.4.4/plugins/map/xviewer-map-plugin.h  2026-07-02 
13:33:11.000000000 +0200
@@ -4,7 +4,7 @@
 #include <glib.h>
 #include <glib-object.h>
 #include <gtk/gtk.h>
-#include <champlain/champlain.h>
+#include <osm-gps-map.h>
 #include <xviewer/xviewer-list-store.h>
 #include <xviewer/xviewer-window.h>
 #include <libpeas/peas-extension-base.h>
@@ -41,19 +41,25 @@
        /* Handlers ids */
        gulong selection_changed_id;
        gulong win_prepared_id;
+       gulong button_press_id;
 
        GtkWidget *thumbview;
        GtkWidget *viewport;
-       ChamplainView *map;
+       OsmGpsMap *map;
 
        GtkWidget *jump_to_button;
 
-       ChamplainMarkerLayer *layer;
+       /* Marker pixbufs */
+       GdkPixbuf *icon_small;
+       GdkPixbuf *icon_large;
+
+       /* All markers (OsmGpsMapImage*) so we can hit-test them */
+       GList *markers;
 
        XviewerListStore *store;
 
-       /* The current selected position */
-       ChamplainLabel *marker;
+       /* The current selected marker */
+       OsmGpsMapImage *marker;
 };
 
 /*

Reply via email to