Fix incompatible pointer types for GtkItemFactoryCallbacks on gcc-14
Review Request #3282 — Created July 6, 2024 and submitted — Latest diff uploaded
The GtkItemFactoryEntry struct callback is of type GtkItemFactoryCallbacks
(aka void ()(void)) but is initialised with GtkItemFactoryCallback1 types
(aka void ()(void , guint, GtkWidget )).This is coherent with the gtk-2 documentation:
gtk_item_factory_create_items(..., GtkItemFactoryEntry *entries,...)
entries : an array of GtkItemFactoryEntrys whose callback members must by of
type GtkItemFactoryCallback1But, under gcc-14, the implicit cast from GtkItemFactoryCallback1 to
GtkItemFactoryCallback triggers an incompatible-pointer-types error (See [gcc-doc]).An exemple of this error:
pidgin/gtkconv.c:3096:66: error: initialization of 'void (*)(void)' from incompatible pointer type 'void (*)(void *, guint, GtkWidget *)' {aka 'void (*)(void *, unsigned int, struct _GtkWidget *)'} [-Wincompatible-pointer-types] 3096 | { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, | ^~~~~~~~~~~~~~~~ pidgin/gtkconv.c:3096:66: note: (near initialization for 'menu_items[1].callback')
To fix this, explicitely cast to GtkItemFactoryCallback where needed.
Built with gcc-14, started and clicked on some affected menus