commit
						cf091bea37
					
				| @ -15,6 +15,10 @@ | |||||||
| - Add the comments to the prototype. Doxygen will merge the protoype and implementation documentation anyways. | - Add the comments to the prototype. Doxygen will merge the protoype and implementation documentation anyways. | ||||||
|   Except for **static** methods, add the documentation header to the implementation and *not to the prototype*. |   Except for **static** methods, add the documentation header to the implementation and *not to the prototype*. | ||||||
| - Member documentation should happen with `/**<` and should span to the right side of the member | - Member documentation should happen with `/**<` and should span to the right side of the member | ||||||
|  | - Test files that have the same name as a file in src/\* can include the | ||||||
|  |   associated .c file. This is because they are being compiled INSTEAD of the src | ||||||
|  |   file. | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ## Log messages | ## Log messages | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							| @ -178,6 +178,7 @@ clean-dunstify: | |||||||
| 
 | 
 | ||||||
| clean-doc: | clean-doc: | ||||||
| 	rm -f docs/dunst.1 | 	rm -f docs/dunst.1 | ||||||
|  | 	rm -f docs/dunst.5 | ||||||
| 	rm -f docs/dunstctl.1 | 	rm -f docs/dunstctl.1 | ||||||
| 	rm -fr docs/internal/html | 	rm -fr docs/internal/html | ||||||
| 	rm -fr docs/internal/coverage | 	rm -fr docs/internal/coverage | ||||||
|  | |||||||
| @ -78,13 +78,12 @@ distro's repositories, don't worry, it's not hard to build it yourself. | |||||||
| 
 | 
 | ||||||
| ### Dependencies | ### Dependencies | ||||||
| 
 | 
 | ||||||
| - dbus | - dbus (runtime) | ||||||
| - libxinerama | - libxinerama | ||||||
| - libxrandr | - libxrandr | ||||||
| - libxss | - libxss | ||||||
| - glib | - glib | ||||||
| - pango/cairo | - pango/cairo | ||||||
| - libgtk-3-dev |  | ||||||
| - libnotify (optional, for dunstify) | - libnotify (optional, for dunstify) | ||||||
| - wayland-client (can build without, see [make parameters](#make-parameters)) | - wayland-client (can build without, see [make parameters](#make-parameters)) | ||||||
| - wayland-protocols (optional, for recompiling protocols) | - wayland-protocols (optional, for recompiling protocols) | ||||||
|  | |||||||
| @ -347,7 +347,13 @@ GdkPixbuf *icon_get_for_data(GVariant *data, char **id) | |||||||
|                 return NULL; |                 return NULL; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // g_memdup is deprecated in glib 2.67.4 and higher.
 | ||||||
|  |         // g_memdup2 is a safer alternative
 | ||||||
|  | #if GLIB_CHECK_VERSION(2,67,3) | ||||||
|  |         data_pb = (guchar *) g_memdup2(g_variant_get_data(data_variant), len_actual); | ||||||
|  | #else | ||||||
|         data_pb = (guchar *) g_memdup(g_variant_get_data(data_variant), len_actual); |         data_pb = (guchar *) g_memdup(g_variant_get_data(data_variant), len_actual); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|         pixbuf = gdk_pixbuf_new_from_data(data_pb, |         pixbuf = gdk_pixbuf_new_from_data(data_pb, | ||||||
|                                           GDK_COLORSPACE_RGB, |                                           GDK_COLORSPACE_RGB, | ||||||
|  | |||||||
| @ -39,7 +39,7 @@ void input_handle_click(unsigned int button, bool button_down, int mouse_x, int | |||||||
|                 enum mouse_action act = acts[i]; |                 enum mouse_action act = acts[i]; | ||||||
|                 if (act == MOUSE_CLOSE_ALL) { |                 if (act == MOUSE_CLOSE_ALL) { | ||||||
|                         queues_history_push_all(); |                         queues_history_push_all(); | ||||||
|                         return; |                         break; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 if (act == MOUSE_CONTEXT_ALL) { |                 if (act == MOUSE_CONTEXT_ALL) { | ||||||
|  | |||||||
| @ -192,7 +192,7 @@ const char *notification_urgency_to_string(const enum urgency urgency) | |||||||
| /* see notification.h */ | /* see notification.h */ | ||||||
| int notification_cmp(const struct notification *a, const struct notification *b) | int notification_cmp(const struct notification *a, const struct notification *b) | ||||||
| { | { | ||||||
|         if (a->urgency != b->urgency) { |         if (settings.sort && a->urgency != b->urgency) { | ||||||
|                 return b->urgency - a->urgency; |                 return b->urgency - a->urgency; | ||||||
|         } else { |         } else { | ||||||
|                 return a->id - b->id; |                 return a->id - b->id; | ||||||
| @ -205,8 +205,6 @@ int notification_cmp_data(const void *va, const void *vb, void *data) | |||||||
|         struct notification *a = (struct notification *) va; |         struct notification *a = (struct notification *) va; | ||||||
|         struct notification *b = (struct notification *) vb; |         struct notification *b = (struct notification *) vb; | ||||||
| 
 | 
 | ||||||
|         ASSERT_OR_RET(settings.sort, 1); |  | ||||||
| 
 |  | ||||||
|         return notification_cmp(a, b); |         return notification_cmp(a, b); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -667,7 +667,6 @@ static void send_frame() { | |||||||
|                 ctx.surface = wl_compositor_create_surface(ctx.compositor); |                 ctx.surface = wl_compositor_create_surface(ctx.compositor); | ||||||
|                 wl_surface_add_listener(ctx.surface, &surface_listener, NULL); |                 wl_surface_add_listener(ctx.surface, &surface_listener, NULL); | ||||||
| 
 | 
 | ||||||
|                 if (settings.frame_color) |  | ||||||
|                 ctx.layer_surface = zwlr_layer_shell_v1_get_layer_surface( |                 ctx.layer_surface = zwlr_layer_shell_v1_get_layer_surface( | ||||||
|                         ctx.layer_shell, ctx.surface, wl_output, |                         ctx.layer_shell, ctx.surface, wl_output, | ||||||
|                         settings.layer, "notifications"); |                         settings.layer, "notifications"); | ||||||
|  | |||||||
| @ -857,6 +857,10 @@ SUITE(suite_dbus) | |||||||
|         loop = g_main_loop_new(NULL, false); |         loop = g_main_loop_new(NULL, false); | ||||||
| 
 | 
 | ||||||
|         dbus_bus = g_test_dbus_new(G_TEST_DBUS_NONE); |         dbus_bus = g_test_dbus_new(G_TEST_DBUS_NONE); | ||||||
|  | 
 | ||||||
|  |         // workaround bug in glib where stdout output is duplicated
 | ||||||
|  |         // See https://gitlab.gnome.org/GNOME/glib/-/issues/2322
 | ||||||
|  |         fflush(stdout); | ||||||
|         g_test_dbus_up(dbus_bus); |         g_test_dbus_up(dbus_bus); | ||||||
| 
 | 
 | ||||||
|         thread_tests = g_thread_new("testexecutor", run_threaded_tests, loop); |         thread_tests = g_thread_new("testexecutor", run_threaded_tests, loop); | ||||||
|  | |||||||
| @ -763,6 +763,68 @@ TEST test_queue_find_by_id(void) | |||||||
|         PASS(); |         PASS(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | void print_queues() { | ||||||
|  |         printf("\nQueues:\n"); | ||||||
|  |         for (GList *iter = g_queue_peek_head_link(QUEUE_WAIT); iter; | ||||||
|  |                         iter = iter->next) { | ||||||
|  |                 struct notification *notif = iter->data; | ||||||
|  |                 printf("waiting %s\n", notif->summary); | ||||||
|  |         } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Test if notifications are correctly sorted, even if dunst is paused in
 | ||||||
|  | // between. See #838 for the issue.
 | ||||||
|  | TEST test_queue_no_sort_and_pause(void) | ||||||
|  | { | ||||||
|  |         // Setting sort to false, this means that notifications will only be
 | ||||||
|  |         // sorted based on time
 | ||||||
|  |         settings.sort = false; | ||||||
|  |         settings.geometry.h = 0; | ||||||
|  |         struct notification *n; | ||||||
|  |         queues_init(); | ||||||
|  | 
 | ||||||
|  |         n = test_notification("n0", 0); | ||||||
|  |         queues_notification_insert(n); | ||||||
|  |         queues_update(STATUS_NORMAL); | ||||||
|  | 
 | ||||||
|  |         n = test_notification("n1", 0); | ||||||
|  |         queues_notification_insert(n); | ||||||
|  |         queues_update(STATUS_NORMAL); | ||||||
|  | 
 | ||||||
|  |         n = test_notification("n2", 0); | ||||||
|  |         queues_notification_insert(n); | ||||||
|  |         queues_update(STATUS_PAUSE); | ||||||
|  | 
 | ||||||
|  |         n = test_notification("n3", 0); | ||||||
|  |         queues_notification_insert(n); | ||||||
|  |         queues_update(STATUS_PAUSE); | ||||||
|  |         /* queues_update(STATUS_NORMAL); */ | ||||||
|  | 
 | ||||||
|  |         n = test_notification("n4", 0); | ||||||
|  |         queues_notification_insert(n); | ||||||
|  |         queues_update(STATUS_NORMAL); | ||||||
|  | 
 | ||||||
|  |         QUEUE_LEN_ALL(0, 5, 0); | ||||||
|  | 
 | ||||||
|  |         const char* order[] = { | ||||||
|  |                 "n0", | ||||||
|  |                 "n1", | ||||||
|  |                 "n2", | ||||||
|  |                 "n3", | ||||||
|  |                 "n4", | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < g_queue_get_length(QUEUE_DISP); i++) { | ||||||
|  |                 struct notification *notif = g_queue_peek_nth(QUEUE_DISP, i); | ||||||
|  |                 ASSERTm("Notifications are not in the right order", | ||||||
|  |                                 STR_EQ(notif->summary, order[i])); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         queues_teardown(); | ||||||
|  |         PASS(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| SUITE(suite_queues) | SUITE(suite_queues) | ||||||
| { | { | ||||||
|         settings.icon_path = ""; |         settings.icon_path = ""; | ||||||
| @ -794,6 +856,7 @@ SUITE(suite_queues) | |||||||
|         RUN_TEST(test_queues_update_xmore); |         RUN_TEST(test_queues_update_xmore); | ||||||
|         RUN_TEST(test_queues_timeout_before_paused); |         RUN_TEST(test_queues_timeout_before_paused); | ||||||
|         RUN_TEST(test_queue_find_by_id); |         RUN_TEST(test_queue_find_by_id); | ||||||
|  |         RUN_TEST(test_queue_no_sort_and_pause); | ||||||
| 
 | 
 | ||||||
|         settings.icon_path = NULL; |         settings.icon_path = NULL; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Nikos Tsipinakis
						Nikos Tsipinakis