diff options
| author | bernard.xiong <[email protected]> | 2011-01-25 09:44:11 +0000 |
|---|---|---|
| committer | bernard.xiong <[email protected]> | 2011-01-25 09:44:11 +0000 |
| commit | 6693b9c2d1f2600fbd068c52e57d8daf4a371425 (patch) | |
| tree | e952eab910de796ae7d68b900ab0628d8f2599ae /components | |
| parent | 211e1aa33446574d3b6e11bd3cefc27fb6b9306b (diff) | |
fix mouse click on whitespace issue in listctrl.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1262 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components')
| -rw-r--r-- | components/rtgui/include/rtgui/rtgui.h | 1 | ||||
| -rw-r--r-- | components/rtgui/widgets/listctrl.c | 14 |
2 files changed, 13 insertions, 2 deletions
diff --git a/components/rtgui/include/rtgui/rtgui.h b/components/rtgui/include/rtgui/rtgui.h index f47c9ea451..5fb795b481 100644 --- a/components/rtgui/include/rtgui/rtgui.h +++ b/components/rtgui/include/rtgui/rtgui.h @@ -105,6 +105,7 @@ enum RTGUI_ALIGN RTGUI_ALIGN_RIGHT = 0x02, RTGUI_ALIGN_BOTTOM = 0x04, RTGUI_ALIGN_CENTER_VERTICAL = 0x08, + RTGUI_ALIGN_CENTER = RTGUI_ALIGN_CENTER_HORIZONTAL | RTGUI_ALIGN_CENTER_VERTICAL, RTGUI_ALIGN_EXPAND = 0x10, RTGUI_ALIGN_STRETCH = 0x20, }; diff --git a/components/rtgui/widgets/listctrl.c b/components/rtgui/widgets/listctrl.c index 29b7fca013..bfc4df815f 100644 --- a/components/rtgui/widgets/listctrl.c +++ b/components/rtgui/widgets/listctrl.c @@ -85,6 +85,7 @@ static void _rtgui_listctrl_scrollbar_ondraw(struct rtgui_listctrl* ctrl, struct y1 = (ctrl->current_item / ctrl->page_items) * height;
rect.y1 = rect.y1 + y1; rect.y2 = rect.y1 + height;
+ rect.x1 -= 3;
rtgui_theme_draw_selected(dc, &rect);
}
@@ -114,6 +115,8 @@ static void _rtgui_listctrl_scrollbar_onmouse(struct rtgui_listctrl* ctrl, struc {
if (ctrl->current_item + ctrl->page_items < ctrl->items_count - 1)
ctrl->current_item += ctrl->page_items;
+ else
+ ctrl->current_item = ((ctrl->current_item / ctrl->page_items) + 1) * ctrl->page_items;
rtgui_listctrl_update_current(ctrl, old_item);
}
}
@@ -254,7 +257,8 @@ rt_bool_t rtgui_listctrl_event_handler(struct rtgui_widget* widget, struct rtgui _rtgui_listctrl_get_rect(ctrl, &rect);
rtgui_widget_rect_to_device(widget, &rect);
- if ((rtgui_rect_contains_point(&rect, emouse->x, emouse->y) == RT_EOK) && (ctrl->items_count > 0))
+ if ((rtgui_rect_contains_point(&rect, emouse->x, emouse->y) == RT_EOK) &&
+ (ctrl->items_count > 0))
{
rt_uint16_t index;
index = (emouse->y - rect.y1) / (2 + rtgui_theme_get_selected_height());
@@ -276,7 +280,8 @@ rt_bool_t rtgui_listctrl_event_handler(struct rtgui_widget* widget, struct rtgui }
}
- if ((index < ctrl->items_count) && (index < ctrl->page_items))
+ if ((index < ctrl->page_items) &&
+ (ctrl->current_item/ctrl->page_items)* ctrl->page_items + index < ctrl->items_count)
{
rt_uint16_t old_item;
@@ -328,6 +333,11 @@ rt_bool_t rtgui_listctrl_event_handler(struct rtgui_widget* widget, struct rtgui case RTGUIK_RIGHT:
if (ctrl->current_item + ctrl->page_items < ctrl->items_count - 1)
ctrl->current_item += ctrl->page_items;
+ else
+ {
+ if ((((ctrl->current_item/ctrl->page_items) + 1) * ctrl->page_items) < ctrl->items_count - 1)
+ ctrl->current_item = ((ctrl->current_item / ctrl->page_items) + 1) * ctrl->page_items;
+ }
rtgui_listctrl_update_current(ctrl, old_item);
return RT_FALSE;
|
