diff --git a/rtgui/common/rtgui_theme.c b/rtgui/common/rtgui_theme.c index 8ac4fce89139f357e53c63c2759c4ede3206dd34..e2c0dd95ce8e1882f1d403ab40c5047a7aae701e 100644 --- a/rtgui/common/rtgui_theme.c +++ b/rtgui/common/rtgui_theme.c @@ -252,6 +252,16 @@ void rtgui_theme_draw_button(rtgui_button_t* btn) } } + if (RTGUI_WIDGET_IS_FOCUSED(RTGUI_WIDGET(btn))) + { + /* re-set foreground and get default rect */ + rtgui_widget_get_rect(RTGUI_WIDGET(btn), &rect); + rtgui_rect_inflate(&rect, -2); + + RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(btn)) = black; + rtgui_dc_draw_focus_rect(dc, &rect); + } + /* set forecolor */ RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(btn)) = bc; RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(btn)) = fc; @@ -412,8 +422,10 @@ void rtgui_theme_draw_checkbox(struct rtgui_checkbox* checkbox) /* fill rect */ rtgui_dc_fill_rect(dc, &rect); - if (RTGUI_WIDGET_IS_FOCUSED(RTGUI_WIDGET(checkbox)) == RT_TRUE) + if (RTGUI_WIDGET_IS_FOCUSED(RTGUI_WIDGET(checkbox))) { + RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(checkbox)) = black; + /* draw focused border */ rtgui_rect_inflate(&rect, -1); rtgui_dc_draw_focus_rect(dc, &rect); @@ -427,6 +439,7 @@ void rtgui_theme_draw_checkbox(struct rtgui_checkbox* checkbox) box_rect.x2 = CHECK_BOX_W; box_rect.y2 = CHECK_BOX_H; rtgui_rect_moveto_align(&rect, &box_rect, RTGUI_ALIGN_CENTER_VERTICAL); + box_rect.x1 += 2; box_rect.x2 += 2; rtgui_dc_draw_border(dc, &box_rect, RTGUI_BORDER_BOX); rtgui_rect_inflate(&box_rect, -1); diff --git a/rtgui/widgets/checkbox.c b/rtgui/widgets/checkbox.c index 4da3fe4b316e645e1954ef1c6a5660656cf92cc2..e3677f0547b23df54ebb2b7dedeb7650c9689eba 100644 --- a/rtgui/widgets/checkbox.c +++ b/rtgui/widgets/checkbox.c @@ -54,7 +54,7 @@ rt_bool_t rtgui_checkbox_event_handler(struct rtgui_widget* widget, struct rtgui emouse->button & RTGUI_MOUSE_BUTTON_UP) { /* set focus */ - RTGUI_WIDGET_FOCUS(widget); + rtgui_widget_focus(widget); if (box->status_down & RTGUI_CHECKBOX_STATUS_UNCHECKED) {