# HG changeset patch
# Node ID 1c3528bf3116
# Parent  b739bb0811f7
diff --git a/pidgin/gtkdialogs.c b/pidgin/gtkdialogs.c
--- a/pidgin/gtkdialogs.c
+++ b/pidgin/gtkdialogs.c
@@ -83,12 +83,6 @@
 	group = purple_request_group_new(NULL);
 	purple_request_page_add_group(page, group);
 
-	username_field = purple_request_field_string_new("screenname", _("_Name"),
-	                                                 NULL, FALSE);
-	purple_request_field_set_type_hint(username_field, "screenname");
-	purple_request_field_set_required(username_field, TRUE);
-	purple_request_group_add_field(group, username_field);
-
 	account_field = purple_request_field_account_new("account", _("_Account"),
 	                                                 NULL);
 	purple_request_field_set_type_hint(account_field, "account");
@@ -102,6 +96,12 @@
 	                                   pidgin_dialogs_im_name_validator,
 	                                   account_field, NULL);
 
+	username_field = purple_request_field_string_new("screenname", _("_Name"),
+	                                                 NULL, FALSE);
+	purple_request_field_set_type_hint(username_field, "screenname");
+	purple_request_field_set_required(username_field, TRUE);
+	purple_request_group_add_field(group, username_field);
+
 	purple_request_fields(
 	        purple_blist_get_default(), _("New Instant Message"), NULL,
 	        _("Please enter the username or alias of the person "
@@ -161,11 +161,6 @@
 	group = purple_request_group_new(NULL);
 	purple_request_page_add_group(page, group);
 
-	field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE);
-	purple_request_field_set_type_hint(field, "screenname");
-	purple_request_field_set_required(field, TRUE);
-	purple_request_group_add_field(group, field);
-
 	field = purple_request_field_account_new("account", _("_Account"), NULL);
 	purple_request_field_set_type_hint(field, "account");
 	purple_request_field_set_visible(field,
@@ -174,6 +169,11 @@
 	purple_request_field_set_required(field, TRUE);
 	purple_request_group_add_field(group, field);
 
+	field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE);
+	purple_request_field_set_type_hint(field, "screenname");
+	purple_request_field_set_required(field, TRUE);
+	purple_request_group_add_field(group, field);
+
 	purple_request_fields(
 	        purple_blist_get_default(), _("Get User Info"), NULL,
 	        _("Please enter the username or alias of the person "
diff --git a/pidgin/gtkrequest.c b/pidgin/gtkrequest.c
--- a/pidgin/gtkrequest.c
+++ b/pidgin/gtkrequest.c
@@ -28,9 +28,9 @@
 #include "gtkrequest.h"
 #include "gtkblist.h"
 #include "gtkutils.h"
-#include "pidginaccountchooser.h"
 #include "pidginaccountdisplay.h"
 #include "pidginaccountfilterconnected.h"
+#include "pidginaccountrow.h"
 #include "pidgincore.h"
 
 #include <gdk/gdkkeysyms.h>
@@ -203,11 +203,11 @@
 field_account_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data)
 {
 	PurpleRequestField *field = data;
-	PidginAccountChooser *chooser = PIDGIN_ACCOUNT_CHOOSER(obj);
+	PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
 
 	purple_request_field_account_set_value(
 	        PURPLE_REQUEST_FIELD_ACCOUNT(field),
-	        pidgin_account_chooser_get_selected(chooser));
+	        pidgin_account_row_get_account(row));
 }
 
 static void
@@ -1214,7 +1214,7 @@
 	GtkFilter *filter = NULL;
 	const char *type_hint = NULL;
 
-	widget = pidgin_account_chooser_new();
+	widget = pidgin_account_row_new();
 	afield = PURPLE_REQUEST_FIELD_ACCOUNT(field);
 	account = purple_request_field_account_get_default_value(afield);
 
@@ -1237,14 +1237,12 @@
 		filter = GTK_FILTER(every);
 	}
 
-	pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(widget),
-	                                    account);
-
+	pidgin_account_row_set_account(PIDGIN_ACCOUNT_ROW(widget), account);
 	g_signal_connect(widget, "notify::account", G_CALLBACK(field_account_cb),
 	                 field);
 
 	if(GTK_IS_FILTER(filter)) {
-		pidgin_account_chooser_set_filter(PIDGIN_ACCOUNT_CHOOSER(widget), filter);
+		pidgin_account_row_set_filter(PIDGIN_ACCOUNT_ROW(widget), filter);
 		g_object_unref(filter);
 	}
 
@@ -1931,6 +1929,7 @@
 				widget = create_image_field(field);
 			} else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
 				widget = create_account_field(field, &account_hint);
+				was_handled_by_create = TRUE;
 			} else if(PURPLE_IS_REQUEST_FIELD_DATASHEET(field)) {
 				widget = create_datasheet_field(field, datasheet_buttons_sg);
 			} else {
diff --git a/pidgin/meson.build b/pidgin/meson.build
--- a/pidgin/meson.build
+++ b/pidgin/meson.build
@@ -24,6 +24,7 @@
 	'pidginaccountfilterprotocol.c',
 	'pidginaccountmanager.c',
 	'pidginaccountmanagerrow.c',
+	'pidginaccountrow.c',
 	'pidginaccountsdisabledmenu.c',
 	'pidginaccountsenabledmenu.c',
 	'pidginactiongroup.c',
@@ -91,6 +92,7 @@
 	'pidginaccountfilterprotocol.h',
 	'pidginaccountmanager.h',
 	'pidginaccountmanagerrow.h',
+	'pidginaccountrow.h',
 	'pidginaccountsdisabledmenu.h',
 	'pidginaccountsenabledmenu.h',
 	'pidginactiongroup.h',
diff --git a/pidgin/pidginaccountrow.h b/pidgin/pidginaccountrow.h
new file mode 100644
--- /dev/null
+++ b/pidgin/pidginaccountrow.h
@@ -0,0 +1,114 @@
+/*
+ * 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/>.
+ */
+
+#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
+# error "only <pidgin.h> may be included directly"
+#endif
+
+#ifndef PIDGIN_ACCOUNT_ROW_H
+#define PIDGIN_ACCOUNT_ROW_H
+
+#include <glib.h>
+
+#include <purple.h>
+
+#include <gtk/gtk.h>
+
+#include <adwaita.h>
+
+G_BEGIN_DECLS
+
+/**
+ * PidginAccountRow:
+ *
+ * A [class@Adw.ComboRow] subclass that allows the user to select an
+ * [class@Purple.Account].
+ *
+ * Since: 3.0.0
+ */
+
+#define PIDGIN_TYPE_ACCOUNT_ROW (pidgin_account_row_get_type())
+G_DECLARE_FINAL_TYPE(PidginAccountRow, pidgin_account_row, PIDGIN, ACCOUNT_ROW,
+                     AdwComboRow)
+
+/**
+ * pidgin_account_row_new:
+ *
+ * Creates a new instance.
+ *
+ * Returns: (transfer full): The new instance.
+ */
+GtkWidget *pidgin_account_row_new(void);
+
+/**
+ * pidgin_account_row_get_account:
+ * @row: The instance.
+ *
+ * Gets the [class@Purple.Account] that is currently selected.
+ *
+ * Returns: (transfer none): The account if one is selected otherwise %NULL if
+ *          the model is empty.
+ *
+ * Since: 3.0.0
+ */
+PurpleAccount *pidgin_account_row_get_account(PidginAccountRow *row);
+
+/**
+ * pidgin_account_row_set_account:
+ * @row: The instance.
+ * @account: (transfer none) (nullable): The [class@Purple.Account] to select.
+ *
+ * Sets the selected account in @row to @account. If @account is %NULL, then
+ * the first item if one exists will be selected.
+ *
+ * Since: 3.0.0
+ */
+void pidgin_account_row_set_account(PidginAccountRow *row, PurpleAccount *account);
+
+/**
+ * pidgin_account_row_get_filter:
+ * @row: The instance.
+ *
+ * Gets the filter that is being used to choose which accounts to display in
+ * @row.
+ *
+ * Returns: (transfer none) (nullable): The filter being used or %NULL.
+ *
+ * Since: 3.0.0
+ */
+GtkFilter *pidgin_account_row_get_filter(PidginAccountRow *row);
+
+/**
+ * pidgin_account_row_set_filter:
+ * @row: The instance.
+ * @filter: (nullable): The new filter.
+ *
+ * Sets the filter for @row to @filter. If @filter is %NULL, any existing
+ * filter will be removed.
+ *
+ * Since: 3.0.0
+ */
+void pidgin_account_row_set_filter(PidginAccountRow *row, GtkFilter *filter);
+
+G_END_DECLS
+
+#endif /* PIDGIN_ACCOUNT_ROW_H */
diff --git a/pidgin/pidginaccountrow.c b/pidgin/pidginaccountrow.c
new file mode 100644
--- /dev/null
+++ b/pidgin/pidginaccountrow.c
@@ -0,0 +1,212 @@
+/*
+ * 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 <purple.h>
+
+#include "pidgin/pidginaccountrow.h"
+
+struct _PidginAccountRow {
+	AdwComboRow parent;
+
+	GtkFilterListModel *filter;
+};
+
+enum {
+	PROP_0,
+	PROP_ACCOUNT,
+	PROP_FILTER,
+	N_PROPERTIES,
+};
+static GParamSpec *properties[N_PROPERTIES] = { NULL, };
+
+G_DEFINE_TYPE(PidginAccountRow, pidgin_account_row, ADW_TYPE_COMBO_ROW)
+
+/******************************************************************************
+ * Callbacks
+ *****************************************************************************/
+static void
+pidgin_account_row_changed_cb(G_GNUC_UNUSED GObject *obj,
+                              G_GNUC_UNUSED GParamSpec *pspec,
+                              gpointer data)
+{
+	g_object_notify_by_pspec(G_OBJECT(data), properties[PROP_ACCOUNT]);
+}
+
+/******************************************************************************
+ * GObject Implementation
+ *****************************************************************************/
+static void
+pidgin_account_row_get_property(GObject *obj, guint param_id, GValue *value,
+                                GParamSpec *pspec)
+{
+	PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
+
+	switch(param_id) {
+		case PROP_ACCOUNT:
+			g_value_set_object(value, pidgin_account_row_get_account(row));
+			break;
+		case PROP_FILTER:
+			g_value_set_object(value, pidgin_account_row_get_filter(row));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
+static void
+pidgin_account_row_set_property(GObject *obj, guint param_id,
+                                const GValue *value, GParamSpec *pspec)
+{
+	PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
+
+	switch(param_id) {
+		case PROP_ACCOUNT:
+			pidgin_account_row_set_account(row, g_value_get_object(value));
+			break;
+		case PROP_FILTER:
+			pidgin_account_row_set_filter(row, g_value_get_object(value));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
+static void
+pidgin_account_row_init(PidginAccountRow *row) {
+	GListModel *model = NULL;
+
+	gtk_widget_init_template(GTK_WIDGET(row));
+
+	model = purple_account_manager_get_default_as_model();
+	gtk_filter_list_model_set_model(row->filter, model);
+}
+
+static void
+pidgin_account_row_class_init(PidginAccountRowClass *klass) {
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+
+	obj_class->get_property = pidgin_account_row_get_property;
+	obj_class->set_property = pidgin_account_row_set_property;
+
+	/**
+	 * PidginAccountRow:account:
+	 *
+	 * The [class@Purple.Account] that is selected.
+	 *
+	 * Since: 3.0.0
+	 */
+	properties[PROP_ACCOUNT] = g_param_spec_object(
+		"account", "account",
+		"The account that is selected.",
+		PURPLE_TYPE_ACCOUNT,
+		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+	/**
+	 * PidginAccountRow:filter:
+	 *
+	 * The filter to use on the list of accounts.
+	 *
+	 * Since: 3.0.0
+	 */
+	properties[PROP_FILTER] = g_param_spec_object(
+	        "filter", "filter",
+	        "The filter to be applied on the list of accounts.",
+	        GTK_TYPE_FILTER,
+	        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
+
+	gtk_widget_class_set_template_from_resource(
+	    widget_class,
+	    "/im/pidgin/Pidgin3/account-row.ui"
+	);
+
+	gtk_widget_class_bind_template_child(widget_class, PidginAccountRow,
+	                                     filter);
+
+	gtk_widget_class_bind_template_callback(widget_class,
+	                                        pidgin_account_row_changed_cb);
+}
+
+/******************************************************************************
+ * API
+ *****************************************************************************/
+GtkWidget *
+pidgin_account_row_new(void) {
+	return g_object_new(PIDGIN_TYPE_ACCOUNT_ROW, NULL);
+}
+
+PurpleAccount *
+pidgin_account_row_get_account(PidginAccountRow *row) {
+	g_return_val_if_fail(PIDGIN_IS_ACCOUNT_ROW(row), NULL);
+
+	return adw_combo_row_get_selected_item(ADW_COMBO_ROW(row));
+}
+
+void
+pidgin_account_row_set_account(PidginAccountRow *row, PurpleAccount *account) {
+	GListModel *model = NULL;
+	guint n_items = 0;
+
+	g_return_if_fail(PIDGIN_IS_ACCOUNT_ROW(row));
+
+	model = adw_combo_row_get_model(ADW_COMBO_ROW(row));
+	g_return_if_fail(G_IS_LIST_MODEL(model));
+
+	n_items = g_list_model_get_n_items(model);
+	for(guint position = 0; position < n_items; position++) {
+		PurpleAccount *account1 = g_list_model_get_item(model, position);
+
+		if(account1 == account) {
+			/* NOTE: Property notification occurs in 'changed' signal
+			 * callback.
+			 */
+			adw_combo_row_set_selected(ADW_COMBO_ROW(row), position);
+
+			g_clear_object(&account1);
+
+			return;
+		}
+
+		g_clear_object(&account1);
+	}
+}
+
+GtkFilter *
+pidgin_account_row_get_filter(PidginAccountRow *row) {
+	g_return_val_if_fail(PIDGIN_IS_ACCOUNT_ROW(row), NULL);
+
+	return gtk_filter_list_model_get_filter(row->filter);
+}
+
+void
+pidgin_account_row_set_filter(PidginAccountRow *row, GtkFilter *filter) {
+	g_return_if_fail(PIDGIN_IS_ACCOUNT_ROW(row));
+
+	gtk_filter_list_model_set_filter(row->filter, filter);
+	g_object_notify_by_pspec(G_OBJECT(row), properties[PROP_FILTER]);
+}
+
diff --git a/pidgin/pidginaddbuddydialog.c b/pidgin/pidginaddbuddydialog.c
--- a/pidgin/pidginaddbuddydialog.c
+++ b/pidgin/pidginaddbuddydialog.c
@@ -24,7 +24,7 @@
 
 #include "pidginaddbuddydialog.h"
 
-#include "pidginaccountchooser.h"
+#include "pidginaccountrow.h"
 #include "pidgincore.h"
 
 struct _PidginAddBuddyDialog {
@@ -67,7 +67,7 @@
 	PurpleAccount *account = NULL;
 	gboolean valid = FALSE;
 
-	account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(dialog->account));
+	account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(dialog->account));
 	if(PURPLE_IS_ACCOUNT(account)) {
 		PurpleProtocol *protocol = NULL;
 
@@ -100,7 +100,7 @@
 		gchar *groupname = NULL;
 
 		/* Grab all of the values that the user entered. */
-		account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(abdialog->account));
+		account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(abdialog->account));
 		username = gtk_editable_get_text(GTK_EDITABLE(abdialog->username));
 		alias = gtk_editable_get_text(GTK_EDITABLE(abdialog->alias));
 		message = gtk_editable_get_text(GTK_EDITABLE(abdialog->message));
@@ -180,7 +180,7 @@
 	PurpleAccount *account = NULL;
 	gboolean message_sensitive = TRUE;
 
-	account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(obj));
+	account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(obj));
 
 	if(PURPLE_IS_ACCOUNT(account)) {
 		PurpleProtocol *protocol = purple_account_get_protocol(account);
@@ -273,8 +273,8 @@
 	PidginAddBuddyDialog *abdialog = PIDGIN_ADD_BUDDY_DIALOG(dialog);
 
 	if(PURPLE_IS_ACCOUNT(account)) {
-		pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(abdialog->account),
-		                                    account);
+		pidgin_account_row_set_account(PIDGIN_ACCOUNT_ROW(abdialog->account),
+		                               account);
 	}
 
 	if(username != NULL) {
diff --git a/pidgin/resources/Dialogs/addbuddy.ui b/pidgin/resources/Dialogs/addbuddy.ui
--- a/pidgin/resources/Dialogs/addbuddy.ui
+++ b/pidgin/resources/Dialogs/addbuddy.ui
@@ -44,18 +44,10 @@
           </object>
         </child>
         <child>
-          <object class="GtkBox">
-            <property name="spacing">6</property>
+          <object class="AdwPreferencesGroup">
+            <property name="title" translatable="1">Buddy information</property>
             <child>
-              <object class="GtkLabel" id="label1">
-                <property name="label" translatable="1">A_ccount:</property>
-                <property name="use-underline">1</property>
-                <property name="mnemonic-widget">account</property>
-                <property name="xalign">0</property>
-              </object>
-            </child>
-            <child>
-              <object class="PidginAccountChooser" id="account">
+              <object class="PidginAccountRow" id="account">
                 <property name="hexpand">1</property>
                 <property name="filter">
                   <object class="GtkEveryFilter">
@@ -68,16 +60,8 @@
                   </object>
                 </property>
                 <signal name="notify::account" handler="pidgin_add_buddy_dialog_account_changed_cb" swapped="no"/>
-                <accessibility>
-                  <relation name="labelled-by">label1</relation>
-                </accessibility>
               </object>
             </child>
-          </object>
-        </child>
-        <child>
-          <object class="AdwPreferencesGroup">
-            <property name="title" translatable="1">Buddy information</property>
             <child>
               <object class="AdwEntryRow" id="username">
                 <property name="title" translatable="1">Buddy&apos;s _username</property>
diff --git a/pidgin/resources/account-row.ui b/pidgin/resources/account-row.ui
new file mode 100644
--- /dev/null
+++ b/pidgin/resources/account-row.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Pidgin - Internet Messenger
+Copyright (C) Pidgin Developers <devel@pidgin.im>
+
+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/>.
+-->
+<interface>
+  <requires lib="gtk" version="4.0"/>
+  <!-- interface-license-type gplv2 -->
+  <!-- interface-name Pidgin -->
+  <!-- interface-description Internet Messenger -->
+  <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
+  <template class="PidginAccountRow" parent="AdwComboRow">
+    <property name="title" translatable="1">Account</property>
+    <property name="factory">
+      <object class="GtkBuilderListItemFactory">
+        <property name="bytes">
+<![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="GtkListItem">
+    <property name="child">
+      <object class="PidginAccountDisplay">
+        <binding name="account">
+          <lookup name="item">GtkListItem</lookup>
+        </binding>
+      </object>
+    </property>
+  </template>
+</interface>
+]]>
+        </property>
+      </object>
+    </property>
+    <property name="model">
+      <object class="GtkFilterListModel" id="filter"/>
+    </property>
+    <signal name="notify::selected" handler="pidgin_account_row_changed_cb"/>
+  </template>
+</interface>
diff --git a/pidgin/resources/pidgin.gresource.xml b/pidgin/resources/pidgin.gresource.xml
--- a/pidgin/resources/pidgin.gresource.xml
+++ b/pidgin/resources/pidgin.gresource.xml
@@ -45,6 +45,7 @@
     <file compressed="true" preprocess="xml-stripblanks">Whiteboard/whiteboard.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">Xfer/xfer.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">gtk/menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">account-row.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">presenceicon.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">statusprimitivechooser.ui</file>
     <file>icons/16x16/status/pidgin-user-available.png</file>
diff --git a/po/POTFILES.in b/po/POTFILES.in
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -253,6 +253,7 @@
 pidgin/pidginaccountfilterprotocol.c
 pidgin/pidginaccountmanager.c
 pidgin/pidginaccountmanagerrow.c
+pidgin/pidginaccountrow.c
 pidgin/pidginaccountsdisabledmenu.c
 pidgin/pidginaccountsenabledmenu.c
 pidgin/pidginactiongroup.c
@@ -330,6 +331,7 @@
 pidgin/resources/Whiteboard/whiteboard.ui
 pidgin/resources/Xfer/xfer.ui
 pidgin/resources/gtk/menus.ui
+pidgin/resources/account-row.ui
 pidgin/win32/gtkwin32dep.c
 pidgin/win32/winpidgin.c
 purple-history/purplehistorycore.c
