li->sb->left = co->left + co->width - 1;
}
+void newtListboxSetCurrentByKey(newtComponent co, void * key) {
+ struct listbox * li = co->data;
+ struct items * item;
+ int i;
+
+ item = li->boxItems, i = 0;
+ while (item && item->data != key)
+ item = item->next, i++;
+
+ if (item)
+ newtListboxSetCurrent(co, i);
+}
+
void newtListboxSetCurrent(newtComponent co, int num)
{
struct listbox * li = co->data;
+
if (num >= li->numItems)
li->currItem = li->numItems - 1;
else if (num < 0)
li->startShowItem = li->numItems - co->height;
if(li->startShowItem < 0)
li->startShowItem = 0;
+
newtListboxRealSetCurrent(co);
}
-static void
-newtListboxRealSetCurrent(newtComponent co)
+static void newtListboxRealSetCurrent(newtComponent co)
{
struct listbox * li = co->data;
+
if(li->sb)
newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
listboxDraw(co);
newtComponent newtListbox(int left, int top, int height, int flags);
void * newtListboxGetCurrent(newtComponent co);
void newtListboxSetCurrent(newtComponent co, int num);
+void newtListboxSetCurrentByKey(newtComponent co, void * key);
void newtListboxSetText(newtComponent co, int num, const char * text);
void newtListboxSetEntry(newtComponent co, int num, const char * text);
void newtListboxSetWidth(newtComponent co, int width);