# HG changeset patch # User Yoann Congal # Date 1720508600 18000 # Node ID 210f318db4927d75d56caebd993a5d9377831d18 # Parent e5067bf7186bdfef4c2d4f0071ad53fcc764101c Fix incompatible pointer types for GtkItemFactoryCallbacks on gcc-14 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 GtkItemFactoryCallback1 But, 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..."), "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. [0]: https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types Testing Done: Built with gcc-14, started and clicked on some affected menus Reviewed at https://reviews.imfreedom.org/r/3282/ diff -r e5067bf7186b -r 210f318db492 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Mon Jul 08 00:54:25 2024 -0500 +++ b/pidgin/gtkblist.c Tue Jul 09 02:03:20 2024 -0500 @@ -3624,11 +3624,11 @@ { N_("/Buddies/View User _Log..."), "L", pidgin_dialogs_log, 0, "", NULL }, { "/Buddies/sep1", NULL, NULL, 0, "", NULL }, { N_("/Buddies/Sh_ow"), NULL, NULL, 0, "", NULL}, - { N_("/Buddies/Show/_Offline Buddies"), NULL, pidgin_blist_edit_mode_cb, 1, "", NULL }, - { N_("/Buddies/Show/_Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "", NULL }, - { N_("/Buddies/Show/Buddy _Details"), NULL, pidgin_blist_buddy_details_cb, 1, "", NULL }, - { N_("/Buddies/Show/Idle _Times"), NULL, pidgin_blist_show_idle_time_cb, 1, "", NULL }, - { N_("/Buddies/Show/_Protocol Icons"), NULL, pidgin_blist_show_protocol_icons_cb, 1, "", NULL }, + { N_("/Buddies/Show/_Offline Buddies"), NULL, (GtkItemFactoryCallback)pidgin_blist_edit_mode_cb, 1, "", NULL }, + { N_("/Buddies/Show/_Empty Groups"), NULL, (GtkItemFactoryCallback)pidgin_blist_show_empty_groups_cb, 1, "", NULL }, + { N_("/Buddies/Show/Buddy _Details"), NULL, (GtkItemFactoryCallback)pidgin_blist_buddy_details_cb, 1, "", NULL }, + { N_("/Buddies/Show/Idle _Times"), NULL, (GtkItemFactoryCallback)pidgin_blist_show_idle_time_cb, 1, "", NULL }, + { N_("/Buddies/Show/_Protocol Icons"), NULL, (GtkItemFactoryCallback)pidgin_blist_show_protocol_icons_cb, 1, "", NULL }, { N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "", NULL }, { "/Buddies/sep2", NULL, NULL, 0, "", NULL }, { N_("/Buddies/_Add Buddy..."), "B", pidgin_blist_add_buddy_cb, 0, "", GTK_STOCK_ADD }, @@ -3651,11 +3651,11 @@ { N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "", NULL }, { N_("/Tools/Set _Mood"), "D", set_mood_show, 0, "", NULL }, { "/Tools/sep2", NULL, NULL, 0, "", NULL }, - { N_("/Tools/_File Transfers"), "T", pidgin_xfer_dialog_show, 0, "", PIDGIN_STOCK_TOOLBAR_TRANSFER }, + { N_("/Tools/_File Transfers"), "T", (GtkItemFactoryCallback)pidgin_xfer_dialog_show, 0, "", PIDGIN_STOCK_TOOLBAR_TRANSFER }, { N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "", NULL }, { N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 3, "", NULL }, { "/Tools/sep3", NULL, NULL, 0, "", NULL }, - { N_("/Tools/Mute _Sounds"), NULL, pidgin_blist_mute_sounds_cb, 0, "", NULL }, + { N_("/Tools/Mute _Sounds"), NULL, (GtkItemFactoryCallback)pidgin_blist_mute_sounds_cb, 0, "", NULL }, /* Help */ { N_("/_Help"), NULL, NULL, 0, "", NULL }, { N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "", GTK_STOCK_HELP }, diff -r e5067bf7186b -r 210f318db492 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Mon Jul 08 00:54:25 2024 -0500 +++ b/pidgin/gtkconv.c Tue Jul 09 02:03:20 2024 -0500 @@ -3093,76 +3093,76 @@ /* Conversation menu */ { N_("/_Conversation"), NULL, NULL, 0, "", NULL }, - { N_("/Conversation/New Instant _Message..."), "M", menu_new_conv_cb, + { N_("/Conversation/New Instant _Message..."), "M", (GtkItemFactoryCallback)menu_new_conv_cb, 0, "", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW }, - { N_("/Conversation/Join a _Chat..."), NULL, menu_join_chat_cb, + { N_("/Conversation/Join a _Chat..."), NULL, (GtkItemFactoryCallback)menu_join_chat_cb, 0, "", PIDGIN_STOCK_CHAT }, { "/Conversation/sep0", NULL, NULL, 0, "", NULL }, - { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, + { N_("/Conversation/_Find..."), NULL, (GtkItemFactoryCallback)menu_find_cb, 0, "", GTK_STOCK_FIND }, - { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, "", NULL }, - { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, + { N_("/Conversation/View _Log"), NULL, (GtkItemFactoryCallback)menu_view_log_cb, 0, "", NULL }, + { N_("/Conversation/_Save As..."), NULL, (GtkItemFactoryCallback)menu_save_as_cb, 0, "", GTK_STOCK_SAVE_AS }, - { N_("/Conversation/Clea_r Scrollback"), "L", menu_clear_cb, 0, "", GTK_STOCK_CLEAR }, + { N_("/Conversation/Clea_r Scrollback"), "L", (GtkItemFactoryCallback)menu_clear_cb, 0, "", GTK_STOCK_CLEAR }, { "/Conversation/sep1", NULL, NULL, 0, "", NULL }, #ifdef USE_VV { N_("/Conversation/M_edia"), NULL, NULL, 0, "", NULL }, - { N_("/Conversation/Media/_Audio Call"), NULL, menu_initiate_media_call_cb, 0, + { N_("/Conversation/Media/_Audio Call"), NULL, (GtkItemFactoryCallback)menu_initiate_media_call_cb, 0, "", PIDGIN_STOCK_TOOLBAR_AUDIO_CALL }, - { N_("/Conversation/Media/_Video Call"), NULL, menu_initiate_media_call_cb, 1, + { N_("/Conversation/Media/_Video Call"), NULL, (GtkItemFactoryCallback)menu_initiate_media_call_cb, 1, "", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, - { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, + { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, (GtkItemFactoryCallback)menu_initiate_media_call_cb, 2, "", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, #endif - { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, - { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION }, - { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, + { N_("/Conversation/Se_nd File..."), NULL, (GtkItemFactoryCallback)menu_send_file_cb, 0, "", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, + { N_("/Conversation/Get _Attention"), NULL, (GtkItemFactoryCallback)menu_get_attention_cb, 0, "", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION }, + { N_("/Conversation/Add Buddy _Pounce..."), NULL, (GtkItemFactoryCallback)menu_add_pounce_cb, 0, "", NULL }, - { N_("/Conversation/_Get Info"), "O", menu_get_info_cb, 0, + { N_("/Conversation/_Get Info"), "O", (GtkItemFactoryCallback)menu_get_info_cb, 0, "", PIDGIN_STOCK_TOOLBAR_USER_INFO }, - { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, + { N_("/Conversation/In_vite..."), NULL, (GtkItemFactoryCallback)menu_invite_cb, 0, "", NULL }, { N_("/Conversation/M_ore"), NULL, NULL, 0, "", NULL }, { "/Conversation/sep2", NULL, NULL, 0, "", NULL }, - { N_("/Conversation/Al_ias..."), NULL, menu_alias_cb, 0, + { N_("/Conversation/Al_ias..."), NULL, (GtkItemFactoryCallback)menu_alias_cb, 0, "", NULL }, - { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, + { N_("/Conversation/_Block..."), NULL, (GtkItemFactoryCallback)menu_block_cb, 0, "", PIDGIN_STOCK_TOOLBAR_BLOCK }, - { N_("/Conversation/_Unblock..."), NULL, menu_unblock_cb, 0, + { N_("/Conversation/_Unblock..."), NULL, (GtkItemFactoryCallback)menu_unblock_cb, 0, "", PIDGIN_STOCK_TOOLBAR_UNBLOCK }, - { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, + { N_("/Conversation/_Add..."), NULL, (GtkItemFactoryCallback)menu_add_remove_cb, 0, "", GTK_STOCK_ADD }, - { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, + { N_("/Conversation/_Remove..."), NULL, (GtkItemFactoryCallback)menu_add_remove_cb, 0, "", GTK_STOCK_REMOVE }, { "/Conversation/sep3", NULL, NULL, 0, "", NULL }, - { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0, + { N_("/Conversation/Insert Lin_k..."), NULL, (GtkItemFactoryCallback)menu_insert_link_cb, 0, "", PIDGIN_STOCK_TOOLBAR_INSERT_LINK }, - { N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0, + { N_("/Conversation/Insert Imag_e..."), NULL, (GtkItemFactoryCallback)menu_insert_image_cb, 0, "", PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE }, { "/Conversation/sep4", NULL, NULL, 0, "", NULL }, - { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, + { N_("/Conversation/_Close"), NULL, (GtkItemFactoryCallback)menu_close_conv_cb, 0, "", GTK_STOCK_CLOSE }, /* Options */ { N_("/_Options"), NULL, NULL, 0, "", NULL }, - { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "", NULL }, - { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "", NULL }, + { N_("/Options/Enable _Logging"), NULL, (GtkItemFactoryCallback)menu_logging_cb, 0, "", NULL }, + { N_("/Options/Enable _Sounds"), NULL, (GtkItemFactoryCallback)menu_sounds_cb, 0, "", NULL }, { "/Options/sep0", NULL, NULL, 0, "", NULL }, - { N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "", NULL }, - { N_("/Options/Show Ti_mestamps"), NULL, menu_timestamps_cb, 0, "", NULL }, + { N_("/Options/Show Formatting _Toolbars"), NULL, (GtkItemFactoryCallback)menu_toolbar_cb, 0, "", NULL }, + { N_("/Options/Show Ti_mestamps"), NULL, (GtkItemFactoryCallback)menu_timestamps_cb, 0, "", NULL }, }; static const int menu_item_count =