всех с прошедшим днем веб-разработчика.
коротко о главном:
имеется динамический массив структур pAccount, count глобальный счетчик кол-ва элементов массива. Задача проста, при помощи combobox выводить список элементов этого массива.
// там выше добавляется новый элемент в массив структур
int i = 0;
count++;
// очищаем combobox
while (i++ < count)
gtk_combo_box_remove_text(GTK_COMBO_BOX(widget),i);
// сортируем массив структур
qsort(pAccount,count,sizeof(struct account),qsort_compare);
i = 0;
// заполняем combobox отсортированным списком
// первый эелемент combobox всегда пустой
while (i < count)
{
gtk_combo_box_insert_text(GTK_COMBO_BOX(widget),i+1,(pAccount+i)->service);
gtk_combo_box_remove_text(GTK_COMBO_BOX(widget),i+2); // осторожно гребаная ГРАБЛЯ
i++;
}
немного пояснений:
- изначально combobox содержит один пустой элемент, как заполняется массив структур не важно, он заполняется и заполняется правильно
- после count++ переменная содержит кол-во элементов массива
- циклом while зачищаем весь combobox кроме первого элемента, он всегда пустой
- сортируем массив (сортируется он правильно)
- в конце концов заполняем combobox отсортированным массивом (первый элемент всегда пустой)
Вот на 5 шаге и возникает трабла, на первой итерации элемент инсертится нормально, а вот на всех последующих почему-то дважды. Я проверял, цикл проходит правильное кол-во итераций, но в итоге если у нас к примеру 5 элементов в массиве, то в combobox окажется первый пустой, потом 5 нужных отсортированных элементов и еще 4 вразнобой повторяющихся. Пришлось добавить граблю что б работало как надо, но это же не по феншую.
В общем вопрос к тем кто имел дело с этой ф-цией, это я туплю или в libgtk2.0-dev - 2.20.1 действительно криво реализована данная ф-ция?