diff options
| author | [email protected] <[email protected]> | 2010-07-04 23:58:35 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2010-07-04 23:58:35 +0000 |
| commit | b25f307b9b94918da883ba083ea4b1c33807719d (patch) | |
| tree | f32c8323a8a62736c00d0019e7f63307e8b6727c /components/rtgui/server | |
| parent | e76cd77c561149c3aa259715571d68729672cae6 (diff) | |
implement hardware DC in each widget.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@787 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/rtgui/server')
| -rw-r--r-- | components/rtgui/server/driver.c | 21 | ||||
| -rw-r--r-- | components/rtgui/server/mouse.c | 2 | ||||
| -rw-r--r-- | components/rtgui/server/panel.c | 14 | ||||
| -rw-r--r-- | components/rtgui/server/panel.h | 4 | ||||
| -rw-r--r-- | components/rtgui/server/server.c | 4 |
5 files changed, 40 insertions, 5 deletions
diff --git a/components/rtgui/server/driver.c b/components/rtgui/server/driver.c index 6793ea1360..5e086f022e 100644 --- a/components/rtgui/server/driver.c +++ b/components/rtgui/server/driver.c @@ -13,6 +13,7 @@ */ #include <rtgui/driver.h> +#ifdef RTGUI_USING_GRAPHIC_DRIVER_LIST struct rtgui_list_node _rtgui_graphic_driver_list = {RT_NULL}; void rtgui_graphic_driver_add(struct rtgui_graphic_driver* driver) @@ -50,10 +51,25 @@ struct rtgui_graphic_driver* rtgui_graphic_driver_get_default() return rtgui_list_entry(_rtgui_graphic_driver_list.next, struct rtgui_graphic_driver, list); } +#else +static const struct rtgui_graphic_driver* _default_graphic_driver = RT_NULL; -void rtgui_graphic_driver_get_rect(struct rtgui_graphic_driver *driver, rtgui_rect_t *rect) +void rtgui_graphic_driver_add(const struct rtgui_graphic_driver* driver) { - if (rect == RT_NULL || driver == RT_NULL) return; + _default_graphic_driver = driver; +} + +const struct rtgui_graphic_driver* rtgui_graphic_driver_get_default() +{ + return _default_graphic_driver; +} +#endif + + +void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect) +{ + RT_ASSERT(rect != RT_NULL); + RT_ASSERT(driver != RT_NULL); rect->x1 = rect->y1 = 0; rect->x2 = driver->width; @@ -65,3 +81,4 @@ void rtgui_graphic_driver_get_default_rect(rtgui_rect_t *rect) /* return default the extent of default driver */ rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), rect); } + diff --git a/components/rtgui/server/mouse.c b/components/rtgui/server/mouse.c index 32965c5115..83b3b171e9 100644 --- a/components/rtgui/server/mouse.c +++ b/components/rtgui/server/mouse.c @@ -129,7 +129,7 @@ static void rtgui_winrect_show (void); #define WIN_MOVE_BORDER 4 void rtgui_mouse_init() { - struct rtgui_graphic_driver* gd = rtgui_graphic_driver_get_default(); + const struct rtgui_graphic_driver* gd = rtgui_graphic_driver_get_default(); _rtgui_cursor = (struct rtgui_cursor*) rtgui_malloc(sizeof(struct rtgui_cursor)); rt_memset(_rtgui_cursor, 0, sizeof(struct rtgui_cursor)); diff --git a/components/rtgui/server/panel.c b/components/rtgui/server/panel.c index 0d767a3f3d..a7689007d2 100644 --- a/components/rtgui/server/panel.c +++ b/components/rtgui/server/panel.c @@ -54,6 +54,7 @@ void rtgui_panel_register(char* name, rtgui_rect_t* extent) panel->extent = *extent; panel->wm_thread = RT_NULL; + panel->is_focusable = RT_TRUE; /* init list */ rtgui_list_init(&(panel->sibling)); @@ -90,6 +91,18 @@ void rtgui_panel_set_default_focused(char* name) } } +void rtgui_panel_set_nofocused(char* name) +{ + extern struct rtgui_panel* rtgui_server_focus_panel; + struct rtgui_panel* panel; + + panel = rtgui_panel_find(name); + if (panel != RT_NULL) + { + panel->is_focusable = RT_FALSE; + } +} + struct rtgui_panel* rtgui_panel_find(char* name) { struct rtgui_list_node* node; @@ -304,3 +317,4 @@ void rtgui_panel_set_wm(rtgui_panel_t* panel, rt_thread_t wm) panel->wm_thread = wm; } + diff --git a/components/rtgui/server/panel.h b/components/rtgui/server/panel.h index fffaa35dc0..559ddc4307 100644 --- a/components/rtgui/server/panel.h +++ b/components/rtgui/server/panel.h @@ -47,6 +47,9 @@ struct rtgui_panel /* the workbench manager thread */ rt_thread_t wm_thread; + + /* is focusable */ + rt_bool_t is_focusable; }; /* find panel by name */ @@ -66,3 +69,4 @@ void rtgui_panel_append_monitor_rect(rtgui_panel_t* panel, rt_thread_t tid, rtgu void rtgui_panel_remove_monitor_rect(rtgui_panel_t* panel, rt_thread_t tid, rtgui_rect_t* rect); #endif + diff --git a/components/rtgui/server/server.c b/components/rtgui/server/server.c index 7e980c458c..4b143438fc 100644 --- a/components/rtgui/server/server.c +++ b/components/rtgui/server/server.c @@ -182,7 +182,7 @@ void rtgui_server_handle_set_wm(struct rtgui_event_set_wm *event) void rtgui_server_handle_update(struct rtgui_event_update_end* event) { - struct rtgui_graphic_driver* driver = rtgui_graphic_driver_get_default(); + const struct rtgui_graphic_driver* driver = rtgui_graphic_driver_get_default(); if (driver != RT_NULL) { driver->screen_update(&(event->rect)); @@ -290,7 +290,7 @@ void rtgui_server_handle_mouse_btn(struct rtgui_event_mouse* event) /* get the panel which contains the mouse */ panel = rtgui_panel_get_contain(event->x, event->y); - if (panel != RT_NULL) + if ((panel != RT_NULL) && (panel->is_focusable == RT_TRUE)) { /* deactivate old window */ if (rtgui_server_focus_topwin != RT_NULL) |
