diff options
Diffstat (limited to 'src/ui/listwidget.c')
-rw-r--r-- | src/ui/listwidget.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/ui/listwidget.c b/src/ui/listwidget.c index 39b9bfe5..b27107df 100644 --- a/src/ui/listwidget.c +++ b/src/ui/listwidget.c | |||
@@ -139,6 +139,10 @@ void setItemHeight_ListWidget(iListWidget *d, int itemHeight) { | |||
139 | invalidate_ListWidget(d); | 139 | invalidate_ListWidget(d); |
140 | } | 140 | } |
141 | 141 | ||
142 | int scrollBarWidth_ListWidget(const iListWidget *d) { | ||
143 | return isVisible_Widget(d->scroll) ? width_Widget(d->scroll) : 0; | ||
144 | } | ||
145 | |||
142 | int itemHeight_ListWidget(const iListWidget *d) { | 146 | int itemHeight_ListWidget(const iListWidget *d) { |
143 | return d->itemHeight; | 147 | return d->itemHeight; |
144 | } | 148 | } |
@@ -318,6 +322,7 @@ static iBool processEvent_ListWidget_(iListWidget *d, const SDL_Event *ev) { | |||
318 | return processEvent_Widget(w, ev); | 322 | return processEvent_Widget(w, ev); |
319 | } | 323 | } |
320 | 324 | ||
325 | #if 0 | ||
321 | static void drawItem_ListWidget_(const iListWidget *d, iPaint *p, size_t index, iInt2 pos) { | 326 | static void drawItem_ListWidget_(const iListWidget *d, iPaint *p, size_t index, iInt2 pos) { |
322 | const iWidget * w = constAs_Widget(d); | 327 | const iWidget * w = constAs_Widget(d); |
323 | const iRect bounds = innerBounds_Widget(w); | 328 | const iRect bounds = innerBounds_Widget(w); |
@@ -325,6 +330,7 @@ static void drawItem_ListWidget_(const iListWidget *d, iPaint *p, size_t index, | |||
325 | const iRect itemRect = { pos, init_I2(width_Rect(bounds), d->itemHeight) }; | 330 | const iRect itemRect = { pos, init_I2(width_Rect(bounds), d->itemHeight) }; |
326 | class_ListItem(item)->draw(item, p, itemRect, d); | 331 | class_ListItem(item)->draw(item, p, itemRect, d); |
327 | } | 332 | } |
333 | #endif | ||
328 | 334 | ||
329 | static const iListItem *item_ListWidget_(const iListWidget *d, size_t pos) { | 335 | static const iListItem *item_ListWidget_(const iListWidget *d, size_t pos) { |
330 | return constAt_PtrArray(&d->items, pos); | 336 | return constAt_PtrArray(&d->items, pos); |
@@ -364,6 +370,9 @@ static void draw_ListWidget_(const iListWidget *d) { | |||
364 | beginTarget_Paint(&p, buf->texture); | 370 | beginTarget_Paint(&p, buf->texture); |
365 | fillRect_Paint(&p, (iRect){ zero_I2(), d->visBuf->texSize }, bg[i]); | 371 | fillRect_Paint(&p, (iRect){ zero_I2(), d->visBuf->texSize }, bg[i]); |
366 | } | 372 | } |
373 | const iRect sbBlankRect = | ||
374 | { init_I2(d->visBuf->texSize.x - scrollBarWidth_ListWidget(d), 0), | ||
375 | init_I2(scrollBarWidth_ListWidget(d), d->itemHeight) }; | ||
367 | iConstForEach(IntSet, v, &d->invalidItems) { | 376 | iConstForEach(IntSet, v, &d->invalidItems) { |
368 | const size_t index = *v.value; | 377 | const size_t index = *v.value; |
369 | if (contains_Range(&drawItems, index)) { | 378 | if (contains_Range(&drawItems, index)) { |
@@ -373,6 +382,7 @@ static void draw_ListWidget_(const iListWidget *d) { | |||
373 | beginTarget_Paint(&p, buf->texture); | 382 | beginTarget_Paint(&p, buf->texture); |
374 | fillRect_Paint(&p, itemRect, bg[i]); | 383 | fillRect_Paint(&p, itemRect, bg[i]); |
375 | class_ListItem(item)->draw(item, &p, itemRect, d); | 384 | class_ListItem(item)->draw(item, &p, itemRect, d); |
385 | fillRect_Paint(&p, moved_Rect(sbBlankRect, init_I2(0, top_Rect(itemRect))), bg[i]); | ||
376 | } | 386 | } |
377 | } | 387 | } |
378 | /* Visible range is not fully covered. Fill in the new items. */ | 388 | /* Visible range is not fully covered. Fill in the new items. */ |
@@ -386,6 +396,7 @@ static void draw_ListWidget_(const iListWidget *d) { | |||
386 | init_I2(d->visBuf->texSize.x, d->itemHeight) }; | 396 | init_I2(d->visBuf->texSize.x, d->itemHeight) }; |
387 | fillRect_Paint(&p, itemRect, bg[i]); | 397 | fillRect_Paint(&p, itemRect, bg[i]); |
388 | class_ListItem(item)->draw(item, &p, itemRect, d); | 398 | class_ListItem(item)->draw(item, &p, itemRect, d); |
399 | fillRect_Paint(&p, moved_Rect(sbBlankRect, init_I2(0, top_Rect(itemRect))), bg[i]); | ||
389 | } | 400 | } |
390 | } | 401 | } |
391 | endTarget_Paint(&p); | 402 | endTarget_Paint(&p); |