/** * Places a data row into the gui GtkTreeView, if and only if the row matches * the user and regex/search requirements. */ static void chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force) { GtkTreeModel *model; /* First, update the 'found' counter values */ serv->gui->chanlist_users_found_count += next_row->users; serv->gui->chanlist_channels_found_count++; if (serv->gui->chanlist_channels_shown_count == 1) /* join & save buttons become live */ chanlist_update_buttons (serv); if (next_row->users < serv->gui->chanlist_minusers) { serv->gui->chanlist_caption_is_stale = TRUE; return; } if (next_row->users > serv->gui->chanlist_maxusers && serv->gui->chanlist_maxusers > 0) { serv->gui->chanlist_caption_is_stale = TRUE; return; } if (GTK_ENTRY (serv->gui->chanlist_wild)->text[0]) { /* Check what the user wants to match. If both buttons or _neither_ * button is checked, look for match in both by default. */ if (serv->gui->chanlist_match_wants_channel == serv->gui->chanlist_match_wants_topic) { if (!chanlist_match (serv, GET_CHAN (next_row)) && !chanlist_match (serv, next_row->topic)) { serv->gui->chanlist_caption_is_stale = TRUE; return; } } else if (serv->gui->chanlist_match_wants_channel) { if (!chanlist_match (serv, GET_CHAN (next_row))) { serv->gui->chanlist_caption_is_stale = TRUE; return; } } else if (serv->gui->chanlist_match_wants_topic) { if (!chanlist_match (serv, next_row->topic)) { serv->gui->chanlist_caption_is_stale = TRUE; return; } } } if (force || serv->gui->chanlist_channels_shown_count < 20) { model = GET_MODEL (serv); /* makes it appear fast :) */ custom_list_append (CUSTOM_LIST (model), next_row); chanlist_update_caption (serv); } else /* add it to GUI at the next update interval */ serv->gui->chanlist_pending_rows = g_slist_prepend (serv->gui->chanlist_pending_rows, next_row); /* Update the 'shown' counter values */ serv->gui->chanlist_users_shown_count += next_row->users; serv->gui->chanlist_channels_shown_count++; }
static bool isChanFree(Channel chan) { return 0U == GET_CHAN(chan).CNDTR.R; }