pidgin/pidgin

Fix username autocompletion

12 months ago, Elliott Sales de Andrade
152522734e16
Parents a6327a3bbfae
Children 853501870190
Fix username autocompletion

This code still assumed the account chooser was a combo box, but it's a drop down now.

Testing Done:
Opened New IM dialog, typed a few letters, and selected a username from the Demo account (while a different account was selected.)

Reviewed at https://reviews.imfreedom.org/r/2362/
--- a/pidgin/gtkutils.c Sun Mar 19 03:38:11 2023 -0500
+++ b/pidgin/gtkutils.c Mon Mar 20 02:39:13 2023 -0500
@@ -45,6 +45,7 @@
#include "gtkdialogs.h"
#include "gtkrequest.h"
#include "gtkutils.h"
+#include "pidginaccountchooser.h"
#include "pidgincore.h"
/******************************************************************************
@@ -74,7 +75,7 @@
typedef struct
{
GtkWidget *entry;
- GtkWidget *accountopt;
+ GtkWidget *chooser;
PidginFilterBuddyCompletionEntryFunc filter_func;
gpointer filter_func_user_data;
@@ -121,24 +122,6 @@
return vbox2;
}
-static void
-aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- gpointer iter_data;
- model = gtk_combo_box_get_model(GTK_COMBO_BOX(optmenu));
- if (gtk_tree_model_get_iter_first(model, &iter)) {
- do {
- gtk_tree_model_get(model, &iter, AOP_DATA_COLUMN, &iter_data, -1);
- if (iter_data == data) {
- gtk_combo_box_set_active_iter(GTK_COMBO_BOX(optmenu), &iter);
- return;
- }
- } while (gtk_tree_model_iter_next(model, &iter));
- }
-}
-
void
pidgin_retrieve_user_info(PurpleConnection *conn, const char *name) {
PurpleNotifyUserInfo *info = NULL;
@@ -232,8 +215,7 @@
PidginCompletionData *data)
{
GValue val;
- GtkWidget *optmenu = data->accountopt;
- PurpleAccount *account;
+ PurpleAccount *account = NULL;
val.g_type = 0;
gtk_tree_model_get_value(model, iter, COMPLETION_BUDDY_COLUMN, &val);
@@ -244,11 +226,14 @@
account = g_value_get_pointer(&val);
g_value_unset(&val);
- if (account == NULL)
+ if(!PURPLE_IS_ACCOUNT(account)) {
return TRUE;
+ }
- if (optmenu != NULL)
- aop_option_menu_select_by_data(optmenu, account);
+ if(PIDGIN_IS_ACCOUNT_CHOOSER(data->chooser)) {
+ pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(data->chooser),
+ account);
+ }
return TRUE;
}
@@ -432,7 +417,7 @@
G_TYPE_POINTER);
data->entry = entry;
- data->accountopt = chooser;
+ data->chooser = chooser;
if (filter_func == NULL) {
data->filter_func = pidgin_screenname_autocomplete_default_filter;
data->filter_func_user_data = NULL;