- for(i=0; i<num_items; i++) {
- if(!(w->itemlist[i] = strdup(items[i]))) {
- fprintf(stderr, "wgt_combo: failed to allocate item\n");
- while(--i >= 0) free(w->itemlist[i]);
- DestroyWindow(w->handle);
- free(w->itemlist);
- free(w);
- return 0;
- }
- if((res = SendMessage(w->handle, CB_ADDSTRING, 0, (long)items[i])) != i) {
- fprintf(stderr, "wgt_combo: failed to add item\n");
- }
- }
- w->num_items = num_items;
+ combosize(win, w->handle, items, num_items, width, height, &rect);
+ w->rect.x = x;
+ w->rect.y = y;
+ w->rect.width = rect.width;
+ w->rect.height = rect.y; /* single line height for layout purposes */
+ MoveWindow(w->handle, x, y, rect.width, rect.height, FALSE);
+
+ wgt_combo_setitems(w, items, num_items);