Thu, 25 Aug 2022 22:30:30 -0500
Remove the use of the removed popup-menu signal and fix the popup menu not displaying
Testing Done:
Double clicked a buddy to open a conversation and right clicked a buddy to make sure the contact menu came up.
Reviewed at https://reviews.imfreedom.org/r/1651/
/* * Pidgin - Internet Messenger * Copyright (C) Pidgin Developers <devel@pidgin.im> * * Pidgin is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see <https://www.gnu.org/licenses/>. */ #include <glib/gi18n-lib.h> #include <pidginprivate.h> /****************************************************************************** * Command Implementations *****************************************************************************/ static PurpleCmdRet say_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { purple_conversation_send(conv, args[0]); return PURPLE_CMD_RET_OK; } static PurpleCmdRet me_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { char *tmp; tmp = g_strdup_printf("/me %s", args[0]); purple_conversation_send(conv, tmp); g_free(tmp); return PURPLE_CMD_RET_OK; } static PurpleCmdRet debug_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { char *tmp, *markup; if (!g_ascii_strcasecmp(args[0], "version")) { tmp = g_strdup_printf("Using Pidgin v%s with libpurple v%s.", DISPLAY_VERSION, purple_core_get_version()); } else if (!g_ascii_strcasecmp(args[0], "plugins")) { /* Show all the loaded plugins, including plugins marked internal. * This is intentional, since third party protocols are often sources of bugs, and some * plugin loaders can also be buggy. */ GString *str = g_string_new("Loaded Plugins: "); const GList *plugins = purple_plugins_get_loaded(); if (plugins) { for (; plugins; plugins = plugins->next) { GPluginPluginInfo *info = GPLUGIN_PLUGIN_INFO( purple_plugin_get_info( PURPLE_PLUGIN(plugins->data))); str = g_string_append( str, gplugin_plugin_info_get_name(info)); if (plugins->next) str = g_string_append(str, ", "); } } else { str = g_string_append(str, "(none)"); } tmp = g_string_free(str, FALSE); } else if (!g_ascii_strcasecmp(args[0], "unsafe")) { if (purple_debug_is_unsafe()) { purple_debug_set_unsafe(FALSE); purple_conversation_write_system_message(conv, _("Unsafe debugging is now disabled."), PURPLE_MESSAGE_NO_LOG); } else { purple_debug_set_unsafe(TRUE); purple_conversation_write_system_message(conv, _("Unsafe debugging is now enabled."), PURPLE_MESSAGE_NO_LOG); } return PURPLE_CMD_RET_OK; } else if (!g_ascii_strcasecmp(args[0], "verbose")) { if (purple_debug_is_verbose()) { purple_debug_set_verbose(FALSE); purple_conversation_write_system_message(conv, _("Verbose debugging is now disabled."), PURPLE_MESSAGE_NO_LOG); } else { purple_debug_set_verbose(TRUE); purple_conversation_write_system_message(conv, _("Verbose debugging is now enabled."), PURPLE_MESSAGE_NO_LOG); } return PURPLE_CMD_RET_OK; } else { purple_conversation_write_system_message(conv, _("Supported debug options are: plugins, version, unsafe, verbose"), PURPLE_MESSAGE_NO_LOG); return PURPLE_CMD_RET_OK; } markup = g_markup_escape_text(tmp, -1); purple_conversation_send(conv, markup); g_free(tmp); g_free(markup); return PURPLE_CMD_RET_OK; } static PurpleCmdRet clear_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { purple_conversation_clear_message_history(conv); return PURPLE_CMD_RET_OK; } static PurpleCmdRet clearall_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { PurpleConversationManager *manager; GList *list; manager = purple_conversation_manager_get_default(); list = purple_conversation_manager_get_all(manager); while(list != NULL) { PurpleConversation *conv = PURPLE_CONVERSATION(list->data); purple_conversation_clear_message_history(conv); list = g_list_delete_link(list, list); } return PURPLE_CMD_RET_OK; } static PurpleCmdRet help_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { GList *l, *text; GString *s; if (args[0] != NULL) { s = g_string_new(""); text = purple_cmd_help(conv, args[0]); if (text) { for (l = text; l; l = l->next) if (l->next) g_string_append_printf(s, "%s\n", (char *)l->data); else g_string_append_printf(s, "%s", (char *)l->data); } else { g_string_append(s, _("No such command (in this context).")); } } else { s = g_string_new(_("Use \"/help <command>\" for help with a " "specific command.<br/>The following commands are available " "in this context:<br/>")); text = purple_cmd_list(conv); for (l = text; l; l = l->next) if (l->next) g_string_append_printf(s, "%s, ", (char *)l->data); else g_string_append_printf(s, "%s.", (char *)l->data); g_list_free(text); } purple_conversation_write_system_message(conv, s->str, PURPLE_MESSAGE_NO_LOG); g_string_free(s, TRUE); return PURPLE_CMD_RET_OK; } /****************************************************************************** * Public API *****************************************************************************/ void pidgin_commands_init(void) { purple_cmd_register("say", "S", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, say_command_cb, _("say <message>: Send a message normally as if you weren't using a command."), NULL); purple_cmd_register("me", "S", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, me_command_cb, _("me <action>: Send an IRC style action to a buddy or chat."), NULL); purple_cmd_register("debug", "w", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, debug_command_cb, _("debug <option>: Send various debug information to the current conversation."), NULL); purple_cmd_register("clear", "", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, clear_command_cb, _("clear: Clears the conversation scrollback."), NULL); purple_cmd_register("clearall", "", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, clearall_command_cb, _("clearall: Clears all conversation scrollbacks."), NULL); purple_cmd_register("help", "w", PURPLE_CMD_P_DEFAULT, PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, NULL, help_command_cb, _("help <command>: Help on a specific command."), NULL); } void pidgin_commands_uninit(void) { }