int grow;
int flags; /* flags for this listbox, right now just
NEWT_FLAG_RETURNEXIT */
+ int beenDisplayed;
};
static void listboxDraw(newtComponent co);
li->numSelected = 0;
li->isActive = 0;
li->userHasSetWidth = 0;
+ li->beenDisplayed = 0;
li->startShowItem = 0;
li->flags = flags & (NEWT_FLAG_RETURNEXIT|NEWT_FLAG_DOBORDER|NEWT_FLAG_MULTIPLE);
struct listbox * li = co->data;
if(li->sb)
newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
if(co->callback) co->callback(co, co->callbackData);
}
li->curWidth = co->width - li->sbAdjust;
li->userHasSetWidth = 1;
li->sb->left = co->width + co->left - 1;
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
}
void * newtListboxGetCurrent(newtComponent co) {
iitem->isSelected = !iitem->isSelected;
}
}
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
}
void newtListboxClearSelection(newtComponent co)
item = item->next)
item->isSelected = 0;
li->numSelected = 0;
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
}
/* Free the returned array after use, but NOT the values in the array */
}
if (num >= li->startShowItem && num <= li->startShowItem + co->height)
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
}
void newtListboxSetEntry(newtComponent co, int num, const char * text) {
co->width = li->curWidth + li->sbAdjust;
li->numItems++;
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
return li->numItems;
}
li->sb->left = co->left + co->width - 1;
}
- listboxDraw(co);
+ if (li->beenDisplayed) listboxDraw(co);
return li->numItems;
}
struct items *item;
int i, j;
+ li->beenDisplayed = 1;
+
if(li->sb)
li->sb->ops->draw(li->sb);