summaryrefslogtreecommitdiff
path: root/components/rtgui/widgets/listbox.c
diff options
context:
space:
mode:
author[email protected] <[email protected]>2011-06-05 15:19:19 +0000
committer[email protected] <[email protected]>2011-06-05 15:19:19 +0000
commitdb9e590b90fc8f01d708f7f67190c114fb1ef6ac (patch)
tree9e1dc68b27ba77627789099be5c127199656b3f0 /components/rtgui/widgets/listbox.c
parentbbf68d15e513d4799f651acd4fd9f88fe3a03ffd (diff)
add multi-text view widget.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1455 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/rtgui/widgets/listbox.c')
-rw-r--r--components/rtgui/widgets/listbox.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/components/rtgui/widgets/listbox.c b/components/rtgui/widgets/listbox.c
index 5bb3feb8f8..cf2532771d 100644
--- a/components/rtgui/widgets/listbox.c
+++ b/components/rtgui/widgets/listbox.c
@@ -41,10 +41,10 @@ DEFINE_CLASS_TYPE(listbox, "listbox",
void rtgui_listbox_ondraw(struct rtgui_listbox* box)
{
- struct rtgui_rect rect, item_rect;
struct rtgui_dc* dc;
rt_uint16_t page_index, index;
const struct rtgui_listbox_item* item;
+ struct rtgui_rect rect, item_rect, image_rect;
dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(box));
if (dc == RT_NULL) return;
@@ -83,7 +83,10 @@ void rtgui_listbox_ondraw(struct rtgui_listbox* box)
if (item->image != RT_NULL)
{
- rtgui_image_blit(item->image, dc, &item_rect);
+ rtgui_image_get_rect(item->image, &image_rect);
+ rtgui_rect_moveto_align(&item_rect, &image_rect, RTGUI_ALIGN_CENTER_VERTICAL);
+
+ rtgui_image_blit(item->image, dc, &image_rect);
item_rect.x1 += item->image->w + 2;
}
/* draw text */
@@ -104,7 +107,7 @@ static void rtgui_listbox_update_current(struct rtgui_listbox* box, rt_int16_t o
{
struct rtgui_dc* dc;
const struct rtgui_listbox_item* item;
- rtgui_rect_t rect, item_rect;
+ rtgui_rect_t rect, item_rect, image_rect;
if ((old_item == -1) || (old_item/box->page_items != box->current_item/box->page_items))
{
@@ -134,7 +137,10 @@ static void rtgui_listbox_update_current(struct rtgui_listbox* box, rt_int16_t o
item = &(box->items[old_item]);
if (item->image != RT_NULL)
{
- rtgui_image_blit(item->image, dc, &item_rect);
+ rtgui_image_get_rect(item->image, &image_rect);
+ rtgui_rect_moveto_align(&item_rect, &image_rect, RTGUI_ALIGN_CENTER_VERTICAL);
+
+ rtgui_image_blit(item->image, dc, &image_rect);
item_rect.x1 += item->image->w + 2;
}
rtgui_dc_draw_text(dc, item->name, &item_rect);
@@ -155,7 +161,10 @@ static void rtgui_listbox_update_current(struct rtgui_listbox* box, rt_int16_t o
item = &(box->items[box->current_item]);
if (item->image != RT_NULL)
{
- rtgui_image_blit(item->image, dc, &item_rect);
+ rtgui_image_get_rect(item->image, &image_rect);
+ rtgui_rect_moveto_align(&item_rect, &image_rect, RTGUI_ALIGN_CENTER_VERTICAL);
+
+ rtgui_image_blit(item->image, dc, &image_rect);
item_rect.x1 += (item->image->w + 2);
}
rtgui_dc_draw_text(dc, item->name, &item_rect);