Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnunet-messenger-gtk for
openSUSE:Factory checked in at 2025-10-01 18:56:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnunet-messenger-gtk (Old)
and /work/SRC/openSUSE:Factory/.gnunet-messenger-gtk.new.11973 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnunet-messenger-gtk"
Wed Oct 1 18:56:05 2025 rev:5 rq:1308237 version:0.11.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/gnunet-messenger-gtk/gnunet-messenger-gtk.changes
2025-01-15 17:45:55.063431105 +0100
+++
/work/SRC/openSUSE:Factory/.gnunet-messenger-gtk.new.11973/gnunet-messenger-gtk.changes
2025-10-01 18:56:36.789540935 +0200
@@ -1,0 +2,11 @@
+Fri Sep 26 18:59:20 UTC 2025 - Andreas Stieger <[email protected]>
+
+- Update to version 0.11.0
+ * Utilize new features from libgnunetchat 0.6.0
+ * Implement private notes chat
+ * Update symbolic icons
+ * Adjust appdata and user interface
+ * Fix thread locking issues
+ * Improve readability of invitations
+
+-------------------------------------------------------------------
Old:
----
messenger-gtk-0.10.2.tar.gz
messenger-gtk-0.10.2.tar.gz.sig
New:
----
messenger-gtk-0.11.0.tar.gz
messenger-gtk-0.11.0.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnunet-messenger-gtk.spec ++++++
--- /var/tmp/diff_new_pack.bMXISF/_old 2025-10-01 18:56:37.517571422 +0200
+++ /var/tmp/diff_new_pack.bMXISF/_new 2025-10-01 18:56:37.521571589 +0200
@@ -17,7 +17,7 @@
Name: gnunet-messenger-gtk
-Version: 0.10.2
+Version: 0.11.0
Release: 0
Summary: GUI for GNUnet Messenger service
License: AGPL-3.0-or-later
@@ -31,7 +31,7 @@
BuildRequires: meson
BuildRequires: pkgconfig
BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(gnunetchat) >= 0.5.1
+BuildRequires: pkgconfig(gnunetchat) >= 0.6.0
BuildRequires: pkgconfig(gnunetutil)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-rtp-1.0)
++++++ messenger-gtk-0.10.2.tar.gz -> messenger-gtk-0.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/.github/workflows/linux.yml
new/messenger-gtk-0.11.0/.github/workflows/linux.yml
--- old/messenger-gtk-0.10.2/.github/workflows/linux.yml 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/.github/workflows/linux.yml 2025-09-17
21:38:22.000000000 +0200
@@ -20,7 +20,7 @@
- name: Install dependencies (framework)
run: |
sudo apt-get -qq update
- sudo apt-get -qq install automake autoconf autopoint gcc gettext
recutils uncrustify yapf3
+ sudo apt-get -qq install meson ninja-build gcc gettext recutils
uncrustify yapf3
sudo apt-get -qq install python3-sphinx python3-sphinx-multiversion
python3-sphinx-rtd-theme
sudo apt-get -qq install libgcrypt20-dev libjansson-dev
libsodium-dev libcurl4-gnutls-dev libidn2-dev libunistring-dev libsqlite3-dev
libmicrohttpd-dev libltdl-dev
@@ -28,9 +28,9 @@
run: |
cd gnunet
./bootstrap
- ./configure --prefix=/usr --disable-documentation
- make -j $(nproc)
- sudo make install
+ meson setup --prefix=/usr --libdir=lib build
+ meson compile -C build
+ sudo meson install -C build
cd ..
- name: Checkout library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/.version
new/messenger-gtk-0.11.0/.version
--- old/messenger-gtk-0.10.2/.version 2025-01-11 21:56:22.088754200 +0100
+++ new/messenger-gtk-0.11.0/.version 2025-09-19 18:28:29.138614000 +0200
@@ -1 +1 @@
-0.10.2
+0.11.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/ChangeLog
new/messenger-gtk-0.11.0/ChangeLog
--- old/messenger-gtk-0.10.2/ChangeLog 2025-01-08 18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/ChangeLog 2025-09-17 21:38:22.000000000 +0200
@@ -1,3 +1,11 @@
+## Version 0.11.0
+* Utilize new features from libgnunetchat 0.6.0
+* Implement private notes chat
+* Update symbolic icons
+* Adjust appdata and user interface
+* Fix thread locking issues
+* Improve readability of invitations
+
## Version 0.10.2
* Fixes compatibility with libgnunetchat 0.5.2
* Update appdata to current state
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/README.md
new/messenger-gtk-0.11.0/README.md
--- old/messenger-gtk-0.10.2/README.md 2025-01-08 18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/README.md 2025-09-17 21:38:22.000000000 +0200
@@ -8,7 +8,7 @@
## Features
-Messenger-GTK is a convergent GTK messaging application using the GNUnet
Messenger service. The goal is to provide private and secure communication
between any group of devices.
+Messenger-GTK is a convergent graphical messaging application using the GNUnet
Messenger service. The goal is to provide private and secure communication
between any group of devices.
The application provides the following features:
@@ -25,6 +25,7 @@
- Switching between different accounts
- Chatting live via video or voice streaming
- Sharing your screen with a selected group
+ - Writing notes to yourself
Chats will generally created as opt-in. So you can decide who may contact you
directly and who does not, accepting to a direct chat. Leaving a chat is also
always possible.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/css/style.css
new/messenger-gtk-0.11.0/resources/css/style.css
--- old/messenger-gtk-0.10.2/resources/css/style.css 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/css/style.css 2025-09-17
21:38:22.000000000 +0200
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2021--2024 GNUnet e.V.
+ Copyright (C) 2021--2025 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -70,6 +70,10 @@
background-color: @error_color;
}
+.chat-view {
+ border-bottom: 1px solid mix(black, @theme_bg_color, 0.6);
+}
+
.message-avatar {
margin: 4px;
}
@@ -85,11 +89,17 @@
background-color: mix(@theme_bg_color, @theme_fg_color, 0.1);
color: @theme_fg_color;
margin-right: 20px;
+ box-shadow: 3px 3px 2px alpha(black, 0.25);
}
.message-box.sent {
background-color: mix(@theme_bg_color, @theme_selected_bg_color, 0.8);
color: @theme_selected_fg_color;
+ box-shadow: -3px 3px 2px alpha(black, 0.25);
+}
+
+.message-box.status {
+ box-shadow: 0px 3px 2px alpha(black, 0.25);
}
.message-box.sent, .message-box.status {
@@ -108,6 +118,10 @@
font-size: 12px;
}
+.picker-switcher-bar {
+ border-bottom: 1px solid mix(black, @theme_bg_color, 0.6);
+}
+
.picker-switcher-box {
padding: 0px 8px;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/messenger-gtk-0.10.2/resources/org.gnunet.Messenger.appdata.xml
new/messenger-gtk-0.11.0/resources/org.gnunet.Messenger.appdata.xml
--- old/messenger-gtk-0.10.2/resources/org.gnunet.Messenger.appdata.xml
2025-01-08 18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/org.gnunet.Messenger.appdata.xml
2025-09-17 21:38:22.000000000 +0200
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2022-2024 GNUnet e.V. -->
+<!-- Copyright 2022-2025 GNUnet e.V. -->
<component type="desktop">
<id>org.gnunet.Messenger</id>
<metadata_license>CC0-1.0</metadata_license>
@@ -16,7 +16,7 @@
<name>GNUnet Messenger</name>
<summary>Private and secure communication</summary>
<description>
- <p>Messenger-GTK is a convergent GTK messaging application
using the GNUnet Messenger service. The goal is to provide private and secure
communication between any group of devices.</p>
+ <p>Messenger-GTK is a convergent graphical messaging
application using the GNUnet Messenger service. The goal is to provide private
and secure communication between any group of devices.</p>
<p>The application provides the following features:</p>
<ul>
<li>Creating direct chats and group chats</li>
@@ -32,6 +32,7 @@
<li>Switching between different accounts</li>
<li>Chatting live via video or voice streaming</li>
<li>Sharing your screen with a selected group</li>
+ <li>Writing notes to yourself</li>
</ul>
<p>Chats will generally created as opt-in. So you can decide
who may contact you directly and who does not, accepting to a direct chat.
Leaving a chat is also always possible.</p>
</description>
@@ -67,18 +68,26 @@
<url type="vcs-browser">https://git.gnunet.org/messenger-gtk.git</url>
<url
type="contribute">https://git.gnunet.org/messenger-gtk.git/about</url>
- <update_contact>thejackimonster_at_gmail.com</update_contact>
+ <update_contact>gnunet_at_thejackimonster.de</update_contact>
<launchable type="desktop-id">org.gnunet.Messenger.desktop</launchable>
<releases>
- <release version="0.10.2" date="2024-01-08">
+ <release version="0.11.0" date="2025-09-17">
+ <description>
+ <ul>
+ <li>Private chats for writing notes to
yourself can be opened</li>
+ </ul>
+ </description>
+
<url>https://www.gnunet.org/en/news/2025-09-libgnunetchat-0.6.0.html</url>
+ </release>
+ <release version="0.10.2" date="2025-01-08">
<description>
<ul>
<li>Notifications play sounds if enabled.</li>
<li>Contacts can be filtered by tags.</li>
</ul>
</description>
-
<url>https://www.gnunet.org/en/news/2024-06-0.21.2.html</url>
+
<url>https://www.gnunet.org/en/news/2025-01-libgnunetchat-0.5.2.html</url>
</release>
<release version="0.10.1" date="2024-08-29">
<description>
@@ -87,7 +96,7 @@
<li>Capturing a specific application or a
whole monitor can be selected as video source in a live chat.</li>
</ul>
</description>
-
<url>https://www.gnunet.org/en/news/2024-06-0.21.2.html</url>
+
<url>https://www.gnunet.org/en/news/2024-08-0.22.0.html</url>
</release>
<release version="0.10.0" date="2024-06-09">
<description>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/chat.ui
new/messenger-gtk-0.11.0/resources/ui/chat.ui
--- old/messenger-gtk-0.10.2/resources/ui/chat.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/chat.ui 2025-09-17
21:38:22.000000000 +0200
@@ -79,6 +79,9 @@
</child>
</object>
</child>
+ <style>
+ <class name="chat-view"/>
+ </style>
</object>
<packing>
<property name="expand">True</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/chat_entry.ui
new/messenger-gtk-0.11.0/resources/ui/chat_entry.ui
--- old/messenger-gtk-0.10.2/resources/ui/chat_entry.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/chat_entry.ui 2025-09-17
21:38:22.000000000 +0200
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.38.2
+<!-- Generated with glade 3.40.0
Copyright (C) 2021 GNUnet e.V.
@@ -112,7 +112,7 @@
<child>
<object class="GtkImage" id="read_receipt_image">
<property name="can-focus">False</property>
- <property name="icon-name">emblem-default-symbolic</property>
+ <property
name="icon-name">mail-mark-notjunk-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/contact_info.ui
new/messenger-gtk-0.11.0/resources/ui/contact_info.ui
--- old/messenger-gtk-0.10.2/resources/ui/contact_info.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/contact_info.ui 2025-09-17
21:38:22.000000000 +0200
@@ -269,7 +269,7 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">emblem-documents-symbolic</property>
+ <property
name="icon-name">view-list-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
@@ -313,7 +313,7 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">emblem-shared-symbolic</property>
+ <property
name="icon-name">folder-publicshare-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
@@ -493,33 +493,79 @@
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
- <object class="GtkBox">
+ <object class="GtkStack" id="open_chat_stack">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property name="spacing">4</property>
<child>
- <object class="GtkImage">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">user-available-symbolic</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage">
+ <property
name="visible">True</property>
+ <property
name="can-focus">False</property>
+ <property
name="icon-name">user-available-symbolic</property>
+ </object>
+ <packing>
+ <property
name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property
name="visible">True</property>
+ <property
name="can-focus">False</property>
+ <property
name="margin-end">16</property>
+ <property name="label"
translatable="yes">Open Private Chat</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property
name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property
name="name">open_private_chat_page</property>
</packing>
</child>
<child>
- <object class="GtkLabel">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property name="margin-end">16</property>
- <property name="label"
translatable="yes">Open Private Chat</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkImage">
+ <property
name="visible">True</property>
+ <property
name="can-focus">False</property>
+ <property
name="icon-name">view-paged-symbolic</property>
+ </object>
+ <packing>
+ <property
name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property
name="visible">True</property>
+ <property
name="can-focus">False</property>
+ <property
name="margin-end">16</property>
+ <property name="label"
translatable="yes">Open Notes</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property
name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="pack-type">end</property>
+ <property
name="name">open_notes_page</property>
<property name="position">1</property>
</packing>
</child>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/files.ui
new/messenger-gtk-0.11.0/resources/ui/files.ui
--- old/messenger-gtk-0.10.2/resources/ui/files.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/files.ui 2025-09-17
21:38:22.000000000 +0200
@@ -119,7 +119,7 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">64</property>
- <property
name="icon-name">emblem-documents-symbolic</property>
+ <property
name="icon-name">folder-documents-symbolic</property>
<property name="icon_size">3</property>
</object>
<packing>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/message-status.ui
new/messenger-gtk-0.11.0/resources/ui/message-status.ui
--- old/messenger-gtk-0.10.2/resources/ui/message-status.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/message-status.ui 2025-09-17
21:38:22.000000000 +0200
@@ -58,7 +58,7 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">edit-delete-symbolic</property>
+ <property
name="icon-name">window-close-symbolic</property>
</object>
</child>
</object>
@@ -100,7 +100,7 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">emblem-ok-symbolic</property>
+ <property
name="icon-name">object-select-symbolic</property>
</object>
</child>
</object>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/message_content.ui
new/messenger-gtk-0.11.0/resources/ui/message_content.ui
--- old/messenger-gtk-0.10.2/resources/ui/message_content.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/message_content.ui 2025-09-17
21:38:22.000000000 +0200
@@ -35,7 +35,7 @@
<child>
<object class="GtkImage" id="read_receipt_image">
<property name="can-focus">False</property>
- <property name="icon-name">emblem-default-symbolic</property>
+ <property name="icon-name">mail-mark-notjunk-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/messenger.ui
new/messenger-gtk-0.11.0/resources/ui/messenger.ui
--- old/messenger-gtk-0.10.2/resources/ui/messenger.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/messenger.ui 2025-09-17
21:38:22.000000000 +0200
@@ -568,7 +568,7 @@
<object class="GtkImage">
<property
name="visible">True</property>
<property
name="can-focus">False</property>
- <property
name="icon-name">emblem-system-symbolic</property>
+ <property
name="icon-name">applications-system-symbolic</property>
<property
name="icon_size">3</property>
</object>
<packing>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/picker.ui
new/messenger-gtk-0.11.0/resources/ui/picker.ui
--- old/messenger-gtk-0.10.2/resources/ui/picker.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/picker.ui 2025-09-17
21:38:22.000000000 +0200
@@ -57,6 +57,9 @@
</child>
</object>
</child>
+ <style>
+ <class name="picker-switcher-bar"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
@@ -71,7 +74,6 @@
<child>
<object class="GtkScrolledWindow" id="recent_emoji_page">
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -102,7 +104,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -134,7 +135,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -166,7 +166,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -198,7 +197,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -230,7 +228,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -262,7 +259,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -294,7 +290,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
@@ -326,7 +321,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/resources/ui/play_media.ui
new/messenger-gtk-0.11.0/resources/ui/play_media.ui
--- old/messenger-gtk-0.10.2/resources/ui/play_media.ui 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/resources/ui/play_media.ui 2025-09-17
21:38:22.000000000 +0200
@@ -324,7 +324,7 @@
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property
name="icon-name">emblem-system-symbolic</property>
+ <property
name="icon-name">preferences-other-symbolic</property>
</object>
</child>
</object>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/snap/snapcraft.yaml
new/messenger-gtk-0.11.0/snap/snapcraft.yaml
--- old/messenger-gtk-0.10.2/snap/snapcraft.yaml 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/snap/snapcraft.yaml 2025-09-17
21:38:22.000000000 +0200
@@ -1,5 +1,5 @@
name: messenger-gtk
-version: 0.10.1
+version: 0.11.0
title: GNUnet Messenger
summary: A GTK based GUI for the Messenger service of GNUnet.
description: |
@@ -17,6 +17,9 @@
* Exchanging contact details physically
* Verifying contact identities
* Switching between different accounts
+ * Chatting live via video or voice streaming
+ * Sharing your screen with a selected group
+ * Writing notes to yourself
Chats will generally created as opt-in. So you can decide who may contact
you directly and who does not, accepting to a direct chat. Leaving a chat is
also always possible.
adopt-info: messenger-gtk
@@ -29,9 +32,6 @@
amd64:
build-on: [amd64]
build-for: [amd64]
- armhf:
- build-on: [armhf]
- build-for: [armhf]
arm64:
build-on: [arm64]
build-for: [arm64]
@@ -82,14 +82,14 @@
- libgnutls-dane0
- libunbound8
- libltdl7
- source: http://ftp.gnu.org/gnu/gnunet/gnunet-0.22.0.tar.gz
- plugin: autotools
- autotools-configure-parameters:
+ source: http://ftp.gnu.org/gnu/gnunet/gnunet-0.25.0.tar.gz
+ plugin: meson
+ meson-parameters:
- --prefix=/usr
- - --disable-documentation
+ - --buildtype=release
libgnunetchat:
after: [ gnunet ]
- source: http://ftp.gnu.org/gnu/gnunet/libgnunetchat-0.5.1.tar.gz
+ source: http://ftp.gnu.org/gnu/gnunet/libgnunetchat-0.6.0.tar.gz
plugin: meson
meson-parameters:
- --prefix=/usr
@@ -120,7 +120,7 @@
- libpipewire-0.3-0t64
- libportal1
- libportal-gtk3-1
- source: http://ftp.gnu.org/gnu/gnunet/messenger-gtk-0.10.1.tar.gz
+ source: http://ftp.gnu.org/gnu/gnunet/messenger-gtk-0.11.0.tar.gz
plugin: meson
meson-parameters:
- --prefix=/usr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/event.c
new/messenger-gtk-0.11.0/src/event.c
--- old/messenger-gtk-0.10.2/src/event.c 2025-01-08 18:17:48.000000000
+0100
+++ new/messenger-gtk-0.11.0/src/event.c 2025-09-17 21:38:22.000000000
+0200
@@ -35,6 +35,7 @@
#include "ui/chat_title.h"
#include "ui/message.h"
+#include <glib-2.0/glib.h>
#include <gnunet/gnunet_chat_lib.h>
#include <gnunet/gnunet_common.h>
#include <stdio.h>
@@ -650,29 +651,24 @@
}
static void
-_event_invitation_accept_click(UNUSED GtkButton *button,
- gpointer user_data)
+_event_invitation_action(MESSENGER_Application *app,
+ gboolean status,
+ gpointer user_data)
{
- g_assert(user_data);
+ g_assert((app) && (user_data));
struct GNUNET_CHAT_Invitation *invitation = (
(struct GNUNET_CHAT_Invitation*) user_data
);
- GNUNET_CHAT_invitation_accept(invitation);
-}
+ application_chat_lock(app);
-static void
-_event_invitation_deny_click(UNUSED GtkButton *button,
- gpointer user_data)
-{
- g_assert(user_data);
-
- struct GNUNET_CHAT_Invitation *invitation = (
- (struct GNUNET_CHAT_Invitation*) user_data
- );
+ if (status)
+ GNUNET_CHAT_invitation_accept(invitation);
+ else
+ GNUNET_CHAT_invitation_reject(invitation);
- GNUNET_CHAT_invitation_reject(invitation);
+ application_chat_unlock(app);
}
void
@@ -693,68 +689,76 @@
if (!invitation)
return;
- if (app->settings.delete_invitations_delay > 0)
- GNUNET_CHAT_message_delete(
- msg,
- app->settings.delete_invitations_delay
- );
+ UI_MESSAGE_Handle *message = GNUNET_CHAT_message_get_user_pointer(msg);
+ enum GNUNET_GenericReturnValue new_message = GNUNET_NO;
- const int sent = GNUNET_CHAT_message_is_sent(msg);
-
- if ((GNUNET_YES != sent) && (app->settings.send_read_receipts))
- GNUNET_CHAT_context_send_read_receipt(context, msg);
+ if (!message)
+ {
+ if (app->settings.delete_invitations_delay > 0)
+ GNUNET_CHAT_message_delete(
+ msg,
+ app->settings.delete_invitations_delay
+ );
- UI_MESSAGE_Handle *message = ui_message_new(app, UI_MESSAGE_STATUS);
- ui_message_update(message, app, msg);
+ const enum GNUNET_GenericReturnValue sent =
+ GNUNET_CHAT_message_is_sent(msg);
- struct GNUNET_CHAT_Contact *sender = GNUNET_CHAT_message_get_sender(
- msg
- );
+ if ((GNUNET_YES != sent) && (app->settings.send_read_receipts))
+ GNUNET_CHAT_context_send_read_receipt(context, msg);
- struct GNUNET_CHAT_Contact *recipient = GNUNET_CHAT_message_get_recipient(
- msg
- );
+ message = ui_message_new(app, UI_MESSAGE_STATUS);
+ new_message = GNUNET_YES;
+ }
- ui_message_set_contact(message, sender);
+ if (!message)
+ return;
- const char *invite_message = _("invited %s to a chat");
- const char *recipient_name = (
- (recipient) &&
- (GNUNET_YES != GNUNET_CHAT_contact_is_owned(recipient))
- )? GNUNET_CHAT_contact_get_name(recipient) : _("you");
+ ui_message_update(message, app, msg);
- GString *message_string = g_string_new(NULL);
- g_string_printf(message_string, invite_message, recipient_name);
+ if (GNUNET_YES == new_message)
+ {
+ struct GNUNET_CHAT_Contact *sender = GNUNET_CHAT_message_get_sender(
+ msg
+ );
- if ((!ui_messenger_is_context_active(&(app->ui.messenger), context)) &&
- (GNUNET_YES == GNUNET_CHAT_message_is_recent(msg)))
- _show_notification(
- app,
- context,
- sender,
- message_string->str,
- "mail-message-new-symbolic",
- "im.received"
+ struct GNUNET_CHAT_Contact *recipient = GNUNET_CHAT_message_get_recipient(
+ msg
);
- ui_label_set_text(message->text_label, message_string->str);
- g_string_free(message_string, TRUE);
+ ui_message_set_contact(message, sender);
- g_signal_connect(
- message->accept_button,
- "clicked",
- G_CALLBACK(_event_invitation_accept_click),
- invitation
- );
+ const char *invite_message = (
+ GNUNET_YES != GNUNET_CHAT_invitation_is_direct(invitation)
+ )? _("invited %s to a chat") : _("requested %s to chat");
+
+ const char *recipient_name = (
+ (recipient) &&
+ (GNUNET_YES != GNUNET_CHAT_contact_is_owned(recipient))
+ )? GNUNET_CHAT_contact_get_name(recipient) : _("you");
+
+ GString *message_string = g_string_new(NULL);
+ g_string_printf(message_string, invite_message, recipient_name);
+
+ if ((!ui_messenger_is_context_active(&(app->ui.messenger), context)) &&
+ (GNUNET_YES == GNUNET_CHAT_message_is_recent(msg)))
+ _show_notification(
+ app,
+ context,
+ sender,
+ message_string->str,
+ "mail-message-new-symbolic",
+ "im.received"
+ );
- g_signal_connect(
- message->deny_button,
- "clicked",
- G_CALLBACK(_event_invitation_deny_click),
- invitation
- );
+ ui_label_set_text(message->text_label, message_string->str);
+ g_string_free(message_string, TRUE);
- ui_chat_add_message(handle->chat, app, message);
+ ui_message_set_status_callback(
+ message, _event_invitation_action, invitation
+ );
+
+ ui_chat_add_message(handle->chat, app, message);
+ }
enqueue_chat_entry_update(handle);
}
@@ -843,6 +847,45 @@
enqueue_chat_entry_update(handle);
}
+static UI_MESSAGE_Handle*
+_find_ui_message_handle(MESSENGER_Application *app,
+ struct GNUNET_CHAT_Context *context,
+ struct GNUNET_CHAT_Message *msg)
+{
+ g_assert((app) && (context) && (msg));
+
+ UI_CHAT_ENTRY_Handle *handle = GNUNET_CHAT_context_get_user_pointer(context);
+
+ if ((!handle) || (!(handle->chat)))
+ return NULL;
+
+ UI_MESSAGE_Handle *message = GNUNET_CHAT_message_get_user_pointer(msg);
+
+ if (!message)
+ {
+ GList *rows = gtk_container_get_children(
+ GTK_CONTAINER(handle->chat->messages_listbox)
+ );
+
+ for (GList *row = rows; row; row = row->next)
+ {
+ message = (UI_MESSAGE_Handle*) g_object_get_qdata(
+ G_OBJECT(row->data), app->quarks.ui
+ );
+
+ if ((message) && (message->msg == msg))
+ break;
+
+ message = NULL;
+ }
+
+ if (rows)
+ g_list_free(rows);
+ }
+
+ return message;
+}
+
static void
_event_update_tag_message_state(MESSENGER_Application *app,
struct GNUNET_CHAT_Context *context,
@@ -867,29 +910,15 @@
if ((!handle) || (!(handle->chat)))
return;
- GList *rows = gtk_container_get_children(
- GTK_CONTAINER(handle->chat->messages_listbox)
- );
-
- for (GList *row = rows; row; row = row->next)
- {
- UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) g_object_get_qdata(
- G_OBJECT(row->data), app->quarks.ui
- );
-
- if ((message) && (message->msg == target))
- {
- if (GNUNET_YES == GNUNET_CHAT_message_is_deleted(msg))
- ui_message_remove_tag(message, app, msg);
- else
- ui_message_add_tag(message, app, msg);
+ UI_MESSAGE_Handle *message = _find_ui_message_handle(app, context, target);
- break;
- }
- }
+ if (!message)
+ return;
- if (rows)
- g_list_free(rows);
+ if (GNUNET_YES == GNUNET_CHAT_message_is_deleted(msg))
+ ui_message_remove_tag(message, app, msg);
+ else
+ ui_message_add_tag(message, app, msg);
}
void
@@ -904,25 +933,10 @@
if ((!handle) || (!(handle->chat)))
return;
- GList *rows = gtk_container_get_children(
- GTK_CONTAINER(handle->chat->messages_listbox)
- );
-
- for (GList *row = rows; row; row = row->next)
- {
- UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) g_object_get_qdata(
- G_OBJECT(row->data), app->quarks.ui
- );
-
- if ((message) && (message->msg == msg))
- {
- ui_chat_remove_message(handle->chat, app, message);
- break;
- }
- }
+ UI_MESSAGE_Handle *message = _find_ui_message_handle(app, context, msg);
- if (rows)
- g_list_free(rows);
+ if (message)
+ ui_chat_remove_message(handle->chat, app, message);
if (GNUNET_CHAT_KIND_TAG == GNUNET_CHAT_message_get_kind(msg))
_event_update_tag_message_state(app, context, msg);
@@ -946,25 +960,10 @@
if ((!handle) || (!(handle->chat)))
return;
- GList *rows = gtk_container_get_children(
- GTK_CONTAINER(handle->chat->messages_listbox)
- );
-
- for (GList *row = rows; row; row = row->next)
- {
- UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) g_object_get_qdata(
- G_OBJECT(row->data), app->quarks.ui
- );
-
- if ((message) && (message->msg == target))
- {
- ui_message_update(message, app, message->msg);
- break;
- }
- }
+ UI_MESSAGE_Handle *message = _find_ui_message_handle(app, context, target);
- if (rows)
- g_list_free(rows);
+ if (message)
+ ui_message_update(message, app, message->msg);
enqueue_chat_entry_update(handle);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/contact_info.c
new/messenger-gtk-0.11.0/src/ui/contact_info.c
--- old/messenger-gtk-0.10.2/src/ui/contact_info.c 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/src/ui/contact_info.c 2025-09-17
21:38:22.000000000 +0200
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2022--2024 GNUnet e.V.
+ Copyright (C) 2022--2025 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -33,6 +33,7 @@
#include "../ui.h"
#include <gnunet/gnunet_chat_lib.h>
+#include <gnunet/gnunet_common.h>
#include <string.h>
static void
@@ -303,6 +304,38 @@
);
}
+static void*
+_open_direct_chat(MESSENGER_Application *app,
+ struct GNUNET_CHAT_Contact *contact)
+{
+ g_assert((app) && (contact));
+
+ application_chat_lock(app);
+
+ struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context(
+ contact
+ );
+
+ if (!context)
+ return GNUNET_NO;
+
+ void *user_pointer = NULL;;
+ enum GNUNET_GenericReturnValue status = GNUNET_CHAT_context_get_status(
+ context
+ );
+
+ if (GNUNET_SYSERR != status)
+ user_pointer = GNUNET_CHAT_context_get_user_pointer(
+ context
+ );
+ else
+ GNUNET_CHAT_context_request(context);
+
+ application_chat_unlock(app);
+
+ return user_pointer;
+}
+
static void
handle_open_chat_button_click(UNUSED GtkButton *button,
gpointer user_data)
@@ -314,30 +347,19 @@
if (!(handle->contact))
return;
- struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context(
- handle->contact
+ UI_CHAT_ENTRY_Handle *entry = _open_direct_chat(
+ handle->app, handle->contact
);
- if (!context)
- return;
-
- if (GNUNET_SYSERR == GNUNET_CHAT_context_get_status(context))
- {
- GNUNET_CHAT_context_request(context);
- goto close_dialog;
- }
-
- UI_CHAT_ENTRY_Handle *entry = GNUNET_CHAT_context_get_user_pointer(context);
-
if ((!entry) || (!(entry->entry_box)))
- return;
+ goto close_dialog;
GtkListBoxRow *row = GTK_LIST_BOX_ROW(
gtk_widget_get_parent(entry->entry_box)
);
if (!row)
- return;
+ goto close_dialog;
gtk_list_box_select_row(handle->app->ui.messenger.chats_listbox, row);
gtk_list_box_invalidate_filter(handle->app->ui.messenger.chats_listbox);
@@ -1328,6 +1350,10 @@
handle
);
+ handle->open_chat_stack = GTK_STACK(
+ gtk_builder_get_object(handle->builder, "open_chat_stack")
+ );
+
handle->back_button = GTK_BUTTON(
gtk_builder_get_object(handle->builder, "back_button")
);
@@ -1393,6 +1419,9 @@
{
g_assert(handle);
+ if (!contact)
+ contact = GNUNET_CHAT_get_own_contact(handle->app->chat.messenger.handle);
+
const char *name = NULL;
const char *key = NULL;
@@ -1567,6 +1596,11 @@
);
}
+ gtk_stack_set_visible_child_name(
+ handle->open_chat_stack,
+ editable? "open_notes_page" : "open_private_chat_page"
+ );
+
struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context(
contact
);
@@ -1578,7 +1612,7 @@
gtk_widget_set_visible(
GTK_WIDGET(handle->open_chat_button),
- !editable
+ context? TRUE : FALSE
);
if (reveal)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/contact_info.h
new/messenger-gtk-0.11.0/src/ui/contact_info.h
--- old/messenger-gtk-0.10.2/src/ui/contact_info.h 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/src/ui/contact_info.h 2025-09-17
21:38:22.000000000 +0200
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2022--2024 GNUnet e.V.
+ Copyright (C) 2022--2025 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -91,6 +91,8 @@
GtkButton *add_tag_button;
GtkButton *remove_tag_button;
+ GtkStack *open_chat_stack;
+
GtkButton *back_button;
GtkButton *close_button;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/message.c
new/messenger-gtk-0.11.0/src/ui/message.c
--- old/messenger-gtk-0.10.2/src/ui/message.c 2025-01-08 18:17:48.000000000
+0100
+++ new/messenger-gtk-0.11.0/src/ui/message.c 2025-09-17 21:38:22.000000000
+0200
@@ -138,6 +138,42 @@
}
static void
+handle_accept_button_click(GtkButton *button,
+ gpointer user_data)
+{
+ g_assert((button) && (user_data));
+
+ MESSENGER_Application *app = (MESSENGER_Application*) user_data;
+
+ UI_MESSAGE_Handle* handle = (UI_MESSAGE_Handle*) (
+ g_object_get_qdata(G_OBJECT(button), app->quarks.ui)
+ );
+
+ if ((!handle) || (!(handle->status_cb)))
+ return;
+
+ handle->status_cb(app, true, handle->status_cls);
+}
+
+static void
+handle_deny_button_click(GtkButton *button,
+ gpointer user_data)
+{
+ g_assert((button) && (user_data));
+
+ MESSENGER_Application *app = (MESSENGER_Application*) user_data;
+
+ UI_MESSAGE_Handle* handle = (UI_MESSAGE_Handle*) (
+ g_object_get_qdata(G_OBJECT(button), app->quarks.ui)
+ );
+
+ if ((!handle) || (!(handle->status_cb)))
+ return;
+
+ handle->status_cb(app, false, handle->status_cls);
+}
+
+static void
handle_media_button_click(GtkButton *button,
gpointer user_data)
{
@@ -266,6 +302,9 @@
handle->msg = NULL;
handle->contact = NULL;
+ handle->status_cb = NULL;
+ handle->status_cls = NULL;
+
const char *ui_builder_file;
switch (handle->type)
@@ -318,6 +357,23 @@
handle->accept_button = GTK_BUTTON(
gtk_builder_get_object(handle->builder[0], "accept_button")
);
+
+ g_object_set_qdata(G_OBJECT(handle->accept_button), app->quarks.ui,
handle);
+ g_object_set_qdata(G_OBJECT(handle->deny_button), app->quarks.ui, handle);
+
+ g_signal_connect(
+ handle->accept_button,
+ "clicked",
+ G_CALLBACK(handle_accept_button_click),
+ app
+ );
+
+ g_signal_connect(
+ handle->deny_button,
+ "clicked",
+ G_CALLBACK(handle_deny_button_click),
+ app
+ );
}
else
{
@@ -418,6 +474,8 @@
handle->app = app;
+ g_object_set_qdata(G_OBJECT(handle->media_button), app->quarks.ui, handle);
+
g_signal_connect(
handle->media_button,
"clicked",
@@ -425,8 +483,6 @@
app
);
- g_object_set_qdata(G_OBJECT(handle->media_button), app->quarks.ui, handle);
-
switch (handle->type)
{
case UI_MESSAGE_STATUS:
@@ -690,8 +746,14 @@
struct GNUNET_CHAT_File *file = NULL;
struct GNUNET_CHAT_Invitation *invitation = NULL;
+ if (handle->msg)
+ GNUNET_CHAT_message_set_user_pointer(handle->msg, NULL);
+
handle->msg = msg;
+ if (msg)
+ GNUNET_CHAT_message_set_user_pointer(msg, handle);
+
ui_message_refresh(handle);
if (msg)
@@ -752,6 +814,17 @@
}
void
+ui_message_set_status_callback(UI_MESSAGE_Handle *handle,
+ UI_MESSAGE_StatusCallback cb,
+ gpointer cls)
+{
+ g_assert(handle);
+
+ handle->status_cb = cb;
+ handle->status_cls = cls;
+}
+
+void
ui_message_add_tag(UI_MESSAGE_Handle *handle,
MESSENGER_Application *app,
struct GNUNET_CHAT_Message *tag_message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/message.h
new/messenger-gtk-0.11.0/src/ui/message.h
--- old/messenger-gtk-0.10.2/src/ui/message.h 2025-01-08 18:17:48.000000000
+0100
+++ new/messenger-gtk-0.11.0/src/ui/message.h 2025-09-17 21:38:22.000000000
+0200
@@ -27,6 +27,7 @@
#include <stdbool.h>
+#include <glib-2.0/glib.h>
#include <gtk-3.0/gtk/gtk.h>
#include <libhandy-1/handy.h>
@@ -41,6 +42,10 @@
UI_MESSAGE_STATUS = 2
} UI_MESSAGE_Type;
+typedef void (*UI_MESSAGE_StatusCallback)(MESSENGER_Application *app,
+ gboolean status,
+ gpointer user_data);
+
typedef struct UI_MESSAGE_Handle
{
UI_MESSAGE_Type type;
@@ -49,6 +54,9 @@
struct GNUNET_CHAT_Message *msg;
struct GNUNET_CHAT_Contact *contact;
+ UI_MESSAGE_StatusCallback status_cb;
+ gpointer status_cls;
+
GtkBuilder *builder [2];
GtkWidget *message_box;
GtkFlowBox *tag_flow_box;
@@ -135,6 +143,19 @@
struct GNUNET_CHAT_Contact *contact);
/**
+ * Sets the callback and closure of a given message
+ * handle for actions of a status message.
+ *
+ * @param handle Message handle
+ * @param cb Status callback
+ * @param cls Status closure
+ */
+void
+ui_message_set_status_callback(UI_MESSAGE_Handle *handle,
+ UI_MESSAGE_StatusCallback cb,
+ gpointer cls);
+
+/**
* Adds a widget to represent a given tag message
* to another message handle.
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/new_group.c
new/messenger-gtk-0.11.0/src/ui/new_group.c
--- old/messenger-gtk-0.10.2/src/ui/new_group.c 2025-01-08 18:17:48.000000000
+0100
+++ new/messenger-gtk-0.11.0/src/ui/new_group.c 2025-09-17 21:38:22.000000000
+0200
@@ -47,8 +47,6 @@
if ((name) && (strlen(name) > 0))
GNUNET_CHAT_group_set_name(group, name);
- application_chat_unlock(app);
-
GList *selected = gtk_list_box_get_selected_rows(listbox);
GList *item = selected;
@@ -62,14 +60,14 @@
g_object_get_qdata(G_OBJECT(row), app->quarks.data)
);
- application_chat_lock(app);
GNUNET_CHAT_group_invite_contact(group, contact);
- application_chat_unlock(app);
}
item = item->next;
}
+ application_chat_unlock(app);
+
if (selected)
g_list_free(selected);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/messenger-gtk-0.10.2/src/ui/play_media.c
new/messenger-gtk-0.11.0/src/ui/play_media.c
--- old/messenger-gtk-0.10.2/src/ui/play_media.c 2025-01-08
18:17:48.000000000 +0100
+++ new/messenger-gtk-0.11.0/src/ui/play_media.c 2025-09-17
21:38:22.000000000 +0200
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2022--2024 GNUnet e.V.
+ Copyright (C) 2022--2025 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -27,6 +27,7 @@
#include "../application.h"
#include "../ui.h"
#include "../util.h"
+#include <glib-2.0/glib.h>
gboolean
ui_play_media_window_supports_file_extension(const gchar *filename)
@@ -170,23 +171,41 @@
}
static gboolean
+_adjust_playing_media_position(UI_PLAY_MEDIA_Handle *handle);
+
+static void
+_set_next_timeout_callback_of_timeline(UI_PLAY_MEDIA_Handle *handle)
+{
+ g_assert(handle);
+
+ handle->timeline = util_timeout_add(
+ 200,
+ G_SOURCE_FUNC(_adjust_playing_media_position),
+ handle
+ );
+}
+
+static gboolean
_adjust_playing_media_position(UI_PLAY_MEDIA_Handle *handle)
{
g_assert(handle);
gint64 pos, len;
+ handle->timeline = 0;
+
if (!(handle->pipeline))
- return FALSE;
+ return G_SOURCE_REMOVE;
if (!gst_element_query_position(handle->pipeline, GST_FORMAT_TIME, &pos))
- return FALSE;
+ return G_SOURCE_REMOVE;
if (!gst_element_query_duration(handle->pipeline, GST_FORMAT_TIME, &len))
- return FALSE;
+ return G_SOURCE_REMOVE;
_set_media_position(handle, pos, len, TRUE);
- return TRUE;
+ _set_next_timeout_callback_of_timeline(handle);
+ return G_SOURCE_REMOVE;
}
static void
@@ -199,11 +218,7 @@
util_source_remove(handle->timeline);
if (connected)
- handle->timeline = util_timeout_add_seconds(
- 1,
- G_SOURCE_FUNC(_adjust_playing_media_position),
- handle
- );
+ _set_next_timeout_callback_of_timeline(handle);
else
handle->timeline = 0;
}
@@ -413,14 +428,17 @@
static gboolean
handle_media_motion_lost(gpointer user_data)
{
+ g_assert(user_data);
+
UI_PLAY_MEDIA_Handle *handle = (UI_PLAY_MEDIA_Handle*) user_data;
+ handle->motion_lost = 0;
+
if (!(hdy_flap_get_reveal_flap(handle->controls_flap)))
- return FALSE;
+ return G_SOURCE_REMOVE;
hdy_flap_set_reveal_flap(handle->controls_flap, FALSE);
- handle->motion_lost = 0;
- return FALSE;
+ return G_SOURCE_REMOVE;
}
static gboolean
@@ -428,10 +446,12 @@
GdkEvent *event,
gpointer user_data)
{
+ g_assert(user_data);
+
UI_PLAY_MEDIA_Handle *handle = (UI_PLAY_MEDIA_Handle*) user_data;
if (hdy_flap_get_reveal_flap(handle->controls_flap))
- return FALSE;
+ return G_SOURCE_REMOVE;
if (handle->motion_lost)
util_source_remove(handle->motion_lost);
@@ -439,7 +459,7 @@
hdy_flap_set_reveal_flap(handle->controls_flap, TRUE);
if (!(handle->fullscreen))
- return FALSE;
+ return G_SOURCE_REMOVE;
handle->motion_lost = util_timeout_add_seconds(
3,
@@ -447,7 +467,7 @@
handle
);
- return FALSE;
+ return G_SOURCE_REMOVE;
}
static void