void w_clistbox_event (w_object_t *object, s_event_t *event) { w_clistbox_t *lb; lb = object->data[OBJECT_CLISTBOX]; if (event->type & KEYBD_EVENT) { if (event->type & KEYBD_RELEASED) { if (event->keybd->keycode == S_KEYCODE_UP) { lb->active = MAX(lb->active - 1, 0); w_clistbox_draw(object); } else if (event->keybd->keycode == S_KEYCODE_DOWN) { lb->active = MIN(lb->items->nb_elt - 1, lb->active + 1); lb->active = MAX(lb->active, 0); w_clistbox_draw(object); } } } }
void w_clistbox_slide (w_object_t *object, int vertical, int horizontal, int *ytotal, int *yoffset) { w_clistbox_t *lb; lb = object->data[OBJECT_CLISTBOX]; lb->yoffset -= vertical; if (vertical > 0) { if (lb->active * lb->itemheight + lb->yoffset < 0) { lb->active += 1; } } else { if ((lb->active + 1) * lb->itemheight + lb->yoffset > lb->object->content->h) { lb->active -= 1; } } w_clistbox_draw(object); (*ytotal) = lb->height; (*yoffset) = lb->yoffset; }
void w_clistbox_geometry (w_object_t *object) { w_frame_geometry(object); w_clistbox_draw(object); }