Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pasystray for openSUSE:Factory checked in at 2023-02-19 18:19:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pasystray (Old) and /work/SRC/openSUSE:Factory/.pasystray.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pasystray" Sun Feb 19 18:19:30 2023 rev:12 rq:1066606 version:0.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/pasystray/pasystray.changes 2022-12-06 14:23:54.569900042 +0100 +++ /work/SRC/openSUSE:Factory/.pasystray.new.22824/pasystray.changes 2023-02-19 18:19:30.137687029 +0100 @@ -1,0 +2,11 @@ +Sun Feb 19 09:35:39 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 0.8.2: + * Fix spurious "item activated: input (null)" + * Improve logging in pulseaudio_action.c + * Fix defaults being changed and streams moved without user + interaction + * Fix alt-click/right-click setting defaults in addition to + muting + +------------------------------------------------------------------- Old: ---- pasystray-0.8.1.tar.gz New: ---- pasystray-0.8.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pasystray.spec ++++++ --- /var/tmp/diff_new_pack.jhnWlD/_old 2023-02-19 18:19:30.541689596 +0100 +++ /var/tmp/diff_new_pack.jhnWlD/_new 2023-02-19 18:19:30.545689621 +0100 @@ -1,7 +1,7 @@ # # spec file for package pasystray # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: pasystray -Version: 0.8.1 +Version: 0.8.2 Release: 0 Summary: PulseAudio system tray License: LGPL-2.1-or-later ++++++ pasystray-0.8.1.tar.gz -> pasystray-0.8.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pasystray-0.8.1/configure.ac new/pasystray-0.8.2/configure.ac --- old/pasystray-0.8.1/configure.ac 2022-11-30 20:27:41.000000000 +0100 +++ new/pasystray-0.8.2/configure.ac 2023-02-10 22:11:00.000000000 +0100 @@ -1,6 +1,6 @@ # This file is part of PaSystray # -# Copyright (C) 2011-2022 Christoph Gysin +# Copyright (C) 2011-2023 Christoph Gysin # # PaSystray is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as @@ -19,7 +19,7 @@ AC_PREREQ([2.68]) -AC_INIT([pasystray], [0.8.1], [christoph.gy...@gmail.com], [pasystray], +AC_INIT([pasystray], [0.8.2], [christoph.gy...@gmail.com], [pasystray], [http://github.com/christophgysin/pasystray]) AC_CONFIG_SRCDIR([src/pasystray.c]) AC_CONFIG_HEADERS([src/config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pasystray-0.8.1/src/menu_info.c new/pasystray-0.8.2/src/menu_info.c --- old/pasystray-0.8.1/src/menu_info.c 2022-11-30 20:27:41.000000000 +0100 +++ new/pasystray-0.8.2/src/menu_info.c 2023-02-10 22:11:00.000000000 +0100 @@ -473,7 +473,7 @@ g_free(label); if(active) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item->widget), TRUE); + menu_info_subitem_set_active(item, TRUE); } menu_info_item_t* menu_info_item_get(menu_info_t* mi, uint32_t index) @@ -505,16 +505,40 @@ return g_hash_table_find(mi->items, desc_equal, (gpointer)desc); } +void menu_info_item_set_active(menu_info_item_t* mii, gboolean is_active) +{ + g_signal_handlers_block_by_func(mii->widget, G_CALLBACK(menu_info_item_activated), mii); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mii->widget), is_active); + g_signal_handlers_unblock_by_func(mii->widget, G_CALLBACK(menu_info_item_activated), mii); +} + +void menu_info_subitem_set_active(menu_info_item_t* mii, gboolean is_active) +{ + g_signal_handlers_block_by_func(mii->widget, G_CALLBACK(menu_info_subitem_activated), mii); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mii->widget), is_active); + g_signal_handlers_unblock_by_func(mii->widget, G_CALLBACK(menu_info_subitem_activated), mii); +} + void menu_info_item_activated(GtkWidget* item, menu_info_item_t* mii) { - if (GTK_IS_CHECK_MENU_ITEM(item) - && !gtk_check_menu_item_get_active(GTK_MENU_ITEM(item))) + if (!GTK_IS_CHECK_MENU_ITEM(item) + || !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))) { - /* Ignore activation of deselected item */ + /* Ignore activation of submenus and deselected items */ return; } - g_debug("[menu_info] subitem activated: %s %s", + GdkEvent *current_event = gtk_get_current_event(); + if (current_event) { + GdkEventType type = current_event->type; + gdk_event_free(current_event); + + /* Ignore activation if already handled by clicked callback */ + if (type == GDK_BUTTON_PRESS || type == GDK_BUTTON_RELEASE) + return; + } + + g_debug("[menu_info] item activated: %s %s", menu_info_type_name(mii->menu_info->type), mii->name); @@ -597,10 +621,10 @@ void menu_info_subitem_activated(GtkWidget* item, menu_info_item_t* mii) { - if (GTK_IS_CHECK_MENU_ITEM(item) - && !gtk_check_menu_item_get_active(GTK_MENU_ITEM(item))) + if (!GTK_IS_CHECK_MENU_ITEM(item) + || !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))) { - /* Ignore activation of deselected item */ + /* Ignore activation of submenus and deselected items */ return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pasystray-0.8.1/src/menu_info.h new/pasystray-0.8.2/src/menu_info.h --- old/pasystray-0.8.1/src/menu_info.h 2022-11-30 20:27:41.000000000 +0100 +++ new/pasystray-0.8.2/src/menu_info.h 2023-02-10 22:11:00.000000000 +0100 @@ -130,6 +130,8 @@ menu_info_item_t* menu_info_item_get(menu_info_t* mi, uint32_t index); menu_info_item_t* menu_info_item_get_by_name(menu_info_t* mi, const char* name); menu_info_item_t* menu_info_item_get_by_desc(menu_info_t* mi, const char* desc); +void menu_info_item_set_active(menu_info_item_t* mii, gboolean is_active); +void menu_info_subitem_set_active(menu_info_item_t* mii, gboolean is_active); void menu_info_item_activated(GtkWidget* item, menu_info_item_t* mii); void menu_info_item_clicked(GtkWidget* item, GdkEventButton* event, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pasystray-0.8.1/src/pulseaudio.c new/pasystray-0.8.2/src/pulseaudio.c --- old/pasystray-0.8.1/src/pulseaudio.c 2022-11-30 20:27:41.000000000 +0100 +++ new/pasystray-0.8.2/src/pulseaudio.c 2023-02-10 22:11:00.000000000 +0100 @@ -352,7 +352,7 @@ menu_info_item_t* item = menu_info_item_get_by_name(mi, new_default); if(item) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item->widget), TRUE); + menu_info_item_set_active(item, TRUE); } void pulseaudio_sink_init_cb(pa_context* c, const pa_sink_info* i, int is_last, void* userdata) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pasystray-0.8.1/src/pulseaudio_action.c new/pasystray-0.8.2/src/pulseaudio_action.c --- old/pasystray-0.8.1/src/pulseaudio_action.c 2022-11-30 20:27:41.000000000 +0100 +++ new/pasystray-0.8.2/src/pulseaudio_action.c 2023-02-10 22:11:00.000000000 +0100 @@ -34,6 +34,9 @@ { pa_operation* o = NULL; + g_debug("[pulseaudio_action] set default %s to %s", + menu_info_type_name(mii->menu_info->type), mii->name); + switch(mii->menu_info->type) { case MENU_SERVER: @@ -133,7 +136,7 @@ void pulseaudio_rename(menu_info_item_t* mii, const char* name) { - g_debug("rename %s '%s' to '%s'", + g_debug("[pulseaudio_action] rename %s '%s' to '%s'", menu_info_type_name(mii->menu_info->type), mii->desc, name); char *key = g_markup_printf_escaped("%s:%s", menu_info_type_name(mii->menu_info->type), mii->name); @@ -157,7 +160,7 @@ void pulseaudio_volume(menu_info_item_t* mii, int inc) { - g_debug("pulseaudio_volume(%s, %i)", mii->name, inc); + g_debug("[pulseaudio_action] pulseaudio_volume(%s, %i)", mii->name, inc); /* increment/decrement in 2% steps */ pa_cvolume* volume; @@ -291,7 +294,7 @@ void pulseaudio_toggle_mute(menu_info_item_t* mii) { - g_debug("pulseaudio_toggle_mute(%s)", mii->name); + g_debug("[pulseaudio_action] pulseaudio_toggle_mute(%s)", mii->name); pa_operation* o = NULL;