@@ -113,9 +113,17 @@ static const char *introspection_xml =
113113 " <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
114114 " </property>"
115115
116- " <property name=\"displayedLength\" type=\"u\" access=\"read\" />"
117- " <property name=\"historyLength\" type=\"u\" access=\"read\" />"
118- " <property name=\"waitingLength\" type=\"u\" access=\"read\" />"
116+ " <property name=\"displayedLength\" type=\"u\" access=\"read\">"
117+ " <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
118+ " </property>"
119+ " <property name=\"historyLength\" type=\"u\" access=\"read\">"
120+ " <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
121+ " </property>"
122+
123+ " <property name=\"waitingLength\" type=\"u\" access=\"read\">"
124+ " <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
125+ " </property>"
126+
119127
120128 " <signal name=\"NotificationHistoryRemoved\">"
121129 " <arg name=\"id\" type=\"u\"/>"
@@ -993,6 +1001,39 @@ void signal_length_propertieschanged(void)
9931001 g_clear_pointer (& invalidated_builder , g_variant_builder_unref );
9941002}
9951003
1004+ void signal_paused_propertieschanged (void )
1005+ {
1006+ if (!dbus_conn )
1007+ return ;
1008+
1009+ struct dunst_status status = dunst_status_get ();
1010+
1011+ GVariantBuilder * builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT );
1012+ GVariantBuilder * invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE_STRING_ARRAY );
1013+
1014+ g_variant_builder_add (builder ,
1015+ "{sv}" ,
1016+ "paused" , g_variant_new_boolean (status .pause_level != 0 ));
1017+ g_variant_builder_add (builder ,
1018+ "{sv}" ,
1019+ "pauseLevel" , g_variant_new_uint32 (status .pause_level ));
1020+
1021+ g_dbus_connection_emit_signal (dbus_conn ,
1022+ NULL ,
1023+ FDN_PATH ,
1024+ PROPERTIES_IFAC ,
1025+ "PropertiesChanged" ,
1026+ g_variant_new ("(sa{sv}as)" ,
1027+ DUNST_IFAC ,
1028+ builder ,
1029+ invalidated_builder ),
1030+ NULL );
1031+
1032+ g_clear_pointer (& builder , g_variant_builder_unref );
1033+ g_clear_pointer (& invalidated_builder , g_variant_builder_unref );
1034+
1035+ }
1036+
9961037static void dbus_cb_Notify (
9971038 GDBusConnection * connection ,
9981039 const gchar * sender ,
@@ -1199,27 +1240,8 @@ gboolean dbus_cb_dunst_Properties_Set(GDBusConnection *connection,
11991240 dunst_status_int (S_PAUSE_LEVEL , targetPauseLevel );
12001241 wake_up ();
12011242
1202- GVariantBuilder * builder = g_variant_builder_new (G_VARIANT_TYPE_VARDICT );
1203- GVariantBuilder * invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE_STRING_ARRAY );
1204- g_variant_builder_add (builder ,
1205- "{sv}" ,
1206- "paused" , g_variant_new_boolean (targetPauseLevel != 0 ));
1207- g_variant_builder_add (builder ,
1208- "{sv}" ,
1209- "pauseLevel" , g_variant_new_uint32 (targetPauseLevel ));
1210- g_dbus_connection_emit_signal (connection ,
1211- NULL ,
1212- object_path ,
1213- PROPERTIES_IFAC ,
1214- "PropertiesChanged" ,
1215- g_variant_new ("(sa{sv}as)" ,
1216- interface_name ,
1217- builder ,
1218- invalidated_builder ),
1219- NULL );
1220-
1221- g_clear_pointer (& builder , g_variant_builder_unref );
1222- g_clear_pointer (& invalidated_builder , g_variant_builder_unref );
1243+ signal_paused_propertieschanged ();
1244+
12231245 return true;
12241246 }
12251247
0 commit comments