Sun, 09 Jun 2024 15:36:02 -0500
IRCv3: Only set up SASL if the account requires a password
Testing Done:
Connected both an account with and without password.
Reviewed at https://reviews.imfreedom.org/r/3249/
/* pidgin * * 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include <purpleconfig.h> #include <glib/gi18n-lib.h> #include <purple.h> #ifdef _WIN32 # undef small # include <shellapi.h> #endif /*_WIN32*/ #include "gtkrequest.h" #include "gtkutils.h" /****************************************************************************** * Code *****************************************************************************/ void pidgin_set_accessible_label(GtkWidget *w, GtkLabel *l) { GtkAccessible *acc, *label; acc = GTK_ACCESSIBLE(w); label = GTK_ACCESSIBLE(l); /* Make sure mnemonics work */ gtk_label_set_mnemonic_widget(l, w); /* Create the labeled-by relation */ gtk_accessible_update_relation(acc, GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL, -1); } gboolean pidgin_auto_parent_window(GtkWidget *widget) { /* This finds the currently active window and makes that the parent window. */ GList *windows = NULL; GtkWindow *parent = NULL; gpointer parent_from; PurpleNotifyType notify_type; parent_from = g_object_get_data(G_OBJECT(widget), "pidgin-parent-from"); if (purple_request_is_valid_ui_handle(parent_from, NULL)) { gtk_window_set_transient_for(GTK_WINDOW(widget), gtk_window_get_transient_for( pidgin_request_get_dialog_window(parent_from))); return TRUE; } if (purple_notify_is_valid_ui_handle(parent_from, ¬ify_type) && notify_type == PURPLE_NOTIFY_MESSAGE) { gtk_window_set_transient_for(GTK_WINDOW(widget), gtk_window_get_transient_for(GTK_WINDOW(parent_from))); return TRUE; } windows = gtk_window_list_toplevels(); while (windows) { GtkWindow *window = GTK_WINDOW(windows->data); windows = g_list_delete_link(windows, windows); if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(window), "pidgin-window-is-closing"))) { parent = gtk_window_get_transient_for(window); break; } if (GTK_WIDGET(window) == widget || !gtk_widget_get_visible(GTK_WIDGET(window))) { continue; } if (gtk_window_is_active(window)) { parent = window; break; } } g_clear_list(&windows, NULL); if (parent) { gtk_window_set_transient_for(GTK_WINDOW(widget), parent); return TRUE; } return FALSE; }