diff --git a/components/rtgui/common/rtgui_system.c b/components/rtgui/common/rtgui_system.c index 2888d85ce9edbd875455a80e713473dfd15dd412..e67cbd2b575eda4b11f7369c0077d50aa9cad301 100644 --- a/components/rtgui/common/rtgui_system.c +++ b/components/rtgui/common/rtgui_system.c @@ -140,21 +140,6 @@ static void rtgui_event_dump(rt_thread_t tid, rtgui_event_t* event) if(info->wid != RT_NULL) rt_kprintf("win: %s", info->wid->title); -#ifdef RTGUI_USING_SMALL_SIZE - rt_kprintf(" clip no. %d", info->num_rect); -#else - { - rtgui_rect_t *rect; - rt_uint32_t index; - - rect = (rtgui_rect_t*)(info + 1); - for (index = 0; index < info->num_rect; index ++) - { - rt_kprintf(" (x1:%d, y1:%d, x2:%d, y2:%d)", rect->x1, rect->y1, rect->x2, rect->y2); - rect ++; - } - } -#endif } break; diff --git a/components/rtgui/widgets/container.c b/components/rtgui/widgets/container.c index 35475a904a833dba14b27ddd014b74418b2f20b2..0a3dce6827d3ecd44cc08fecc4af83c82f4e201d 100644 --- a/components/rtgui/widgets/container.c +++ b/components/rtgui/widgets/container.c @@ -84,13 +84,18 @@ rt_bool_t rtgui_container_dispatch_mouse_event(rtgui_container_t *container, str { /* handle in child widget */ struct rtgui_list_node* node; + rtgui_widget_t *focus; + /* get focus widget on toplevel */ + focus = RTGUI_CONTAINER(RTGUI_WIDGET(container)->toplevel)->focused; rtgui_list_foreach(node, &(container->children)) { struct rtgui_widget* w; w = rtgui_list_entry(node, struct rtgui_widget, sibling); if (rtgui_rect_contains_point(&(w->extent), event->x, event->y) == RT_EOK) { + if ((focus != w) && RTGUI_WIDGET_IS_FOCUSABLE(w)) + rtgui_widget_focus(w); if (w->event_handler(w, (rtgui_event_t*)event) == RT_TRUE) return RT_TRUE; } } @@ -105,24 +110,10 @@ rt_bool_t rtgui_container_event_handler(rtgui_widget_t* widget, rtgui_event_t* e switch (event->type) { case RTGUI_EVENT_PAINT: -#ifndef RTGUI_USING_SMALL_SIZE - if (widget->on_draw != RT_NULL) - { - return widget->on_draw(widget, event); - } -#endif - rtgui_container_dispatch_event(container, event); break; case RTGUI_EVENT_KBD: -#ifndef RTGUI_USING_SMALL_SIZE - if (widget->on_key != RT_NULL) - { - return widget->on_key(widget, event); - } - else -#endif { /* let parent to handle keyboard event */ if (widget->parent != RT_NULL && widget->parent != widget->toplevel) @@ -137,13 +128,6 @@ rt_bool_t rtgui_container_event_handler(rtgui_widget_t* widget, rtgui_event_t* e if (rtgui_container_dispatch_mouse_event(container, (struct rtgui_event_mouse*)event) == RT_FALSE) { -#ifndef RTGUI_USING_SMALL_SIZE - /* handle event in current widget */ - if (widget->on_mouseclick != RT_NULL) - { - return widget->on_mouseclick(widget, event); - } -#endif } else return RT_TRUE; break; diff --git a/components/rtgui/widgets/view.c b/components/rtgui/widgets/view.c index ec8f12cd1b413c0713febe3dda20148ab28973b2..9bdc4236acd03346be0d144c00c36bcc6335f07d 100644 --- a/components/rtgui/widgets/view.c +++ b/components/rtgui/widgets/view.c @@ -71,10 +71,6 @@ rt_bool_t rtgui_view_event_handler(struct rtgui_widget* widget, struct rtgui_eve switch (event->type) { case RTGUI_EVENT_PAINT: -#ifndef RTGUI_USING_SMALL_SIZE - if (widget->on_draw != RT_NULL) widget->on_draw(widget, event); - else -#endif { struct rtgui_dc* dc; struct rtgui_rect rect;