diff --git a/core/ctk/ctk-conio.c b/core/ctk/ctk-conio.c index 98fe8324a..36929dc06 100644 --- a/core/ctk/ctk-conio.c +++ b/core/ctk/ctk-conio.c @@ -29,7 +29,7 @@ * * This file is part of the "ctk" console GUI toolkit for cc65 * - * $Id: ctk-conio.c,v 1.6 2007/11/30 21:50:09 oliverschmidt Exp $ + * $Id: ctk-conio.c,v 1.7 2007/12/15 20:46:15 oliverschmidt Exp $ * */ @@ -240,7 +240,7 @@ ctk_draw_widget(struct ctk_widget *w, unsigned char posx, posy; posx = win->x + 1; - posy = win->y + 2; + posy = win->y + 1 + CTK_CONF_MENUS; if(w == win->focused) { focus |= CTK_FOCUS_WIDGET; @@ -272,10 +272,10 @@ ctk_draw_clear_window(struct ctk_window *window, (void)textcolor(WINDOWCOLOR); } - h = window->y + 2 + window->h; + h = window->y + 1 + CTK_CONF_MENUS + window->h; /* Clear window contents. */ - for(i = window->y + 2; i < h; ++i) { + for(i = window->y + 1 + CTK_CONF_MENUS; i < h; ++i) { if(i >= clipy1 && i < clipy2) { cclearxy(window->x + 1, i, window->w); } @@ -324,12 +324,12 @@ ctk_draw_window(struct ctk_window *window, unsigned char focus, unsigned char h; unsigned char x1, y1, x2, y2; - if(window->y + 1 >= clipy2) { + if(window->y + CTK_CONF_MENUS >= clipy2) { return; } x = window->x; - y = window->y + 1; + y = window->y + CTK_CONF_MENUS; x1 = x + 1; y1 = y + 1; x2 = x1 + window->w; @@ -356,7 +356,7 @@ ctk_draw_window(struct ctk_window *window, unsigned char focus, if(clipy1 > y1) { if(clipy1 - y1 < h) { h = clipy1 - y1; - y1 = clipy1; + y1 = clipy1; } else { h = 0; } @@ -395,7 +395,7 @@ ctk_draw_dialog(struct ctk_window *dialog) (void)textcolor(DIALOGCOLOR); x = dialog->x; - y = dialog->y + 1; + y = dialog->y + CTK_CONF_MENUS; x1 = x + 1; y1 = y + 1; diff --git a/core/ctk/ctk.c b/core/ctk/ctk.c index 7aafe3673..ff4e3c68d 100644 --- a/core/ctk/ctk.c +++ b/core/ctk/ctk.c @@ -44,7 +44,7 @@ * * This file is part of the Contiki operating system. * - * $Id: ctk.c,v 1.14 2007/12/15 11:34:59 oliverschmidt Exp $ + * $Id: ctk.c,v 1.15 2007/12/15 20:46:15 oliverschmidt Exp $ * */ @@ -94,7 +94,7 @@ static unsigned char redraw_widgetptr; #if CTK_CONF_ICONS static unsigned char iconx, icony; #define ICONX_START (width - 6) -#define ICONY_START (height - 7) +#define ICONY_START (height - 6 - CTK_CONF_MENUS) #define ICONX_DELTA -16 #define ICONY_DELTA -5 #define ICONY_MAX height @@ -139,11 +139,9 @@ process_event_t /** Same as ctk_signal_widget_select. */ ctk_signal_hyperlink_hover; -#if CTK_CONF_MENUS /** Emitted when a menu item is activated. The number of the menu item is passed as signal data. */ process_event_t ctk_signal_menu_activate; -#endif /* CTK_CONF_MENUS */ /** Emitted when a window is closed. A pointer to the window is passed as signal data. */ @@ -638,7 +636,7 @@ ctk_desktop_redraw(struct ctk_desktop *d) if(mode == CTK_MODE_NORMAL || mode == CTK_MODE_WINDOWMOVE) { - do_redraw_all(1, height); + do_redraw_all(CTK_CONF_MENUS, height); } } else { height = ctk_draw_height(); @@ -1392,8 +1390,10 @@ PROCESS_THREAD(ctk_process, ev, data) #if CTK_CONF_MOUSE_SUPPORT static unsigned char mxc, myc, mouse_button_changed, mouse_moved, mouse_clicked; +#if CTK_CONF_MENUS static unsigned char menux; register struct ctk_menu *menu; +#endif /* CTK_CONF_MENUS */ #endif /* CTK_CONF_MOUSE_SUPPORT */ PROCESS_BEGIN(); @@ -1426,9 +1426,7 @@ PROCESS_THREAD(ctk_process, ev, data) ctk_signal_hyperlink_activate = process_alloc_event(); -#if CTK_CONF_MENUS ctk_signal_menu_activate = process_alloc_event(); -#endif /* CTK_CONF_MENUS */ ctk_signal_window_close = process_alloc_event(); @@ -1519,6 +1517,7 @@ PROCESS_THREAD(ctk_process, ev, data) screensaver_timer = 0; #endif /* CTK_CONF_SCREENSAVER */ +#if CTK_CONF_MENUS if(myc == 0) { /* Here we should do whatever needs to be done when the mouse moves around and clicks in the menubar. */ @@ -1593,6 +1592,7 @@ PROCESS_THREAD(ctk_process, ev, data) redraw |= REDRAW_MENUS; } } else { +#endif /* CTK_CONF_MENUS */ /* Walk through the windows from top to bottom to see in which window the mouse pointer is. */ @@ -1706,8 +1706,10 @@ PROCESS_THREAD(ctk_process, ev, data) } } } +#if CTK_CONF_MENUS } } +#endif /* CTK_CONF_MENUS */ } #endif /* CTK_CONF_MOUSE_SUPPORT */ @@ -1839,9 +1841,11 @@ PROCESS_THREAD(ctk_process, ev, data) } else { window->y = myc; } +#if CTK_CONF_MENUS if(window->y > 0) { --window->y; } +#endif /* CTK_CONF_MENUS */ redraw = REDRAW_ALL; } @@ -1879,7 +1883,7 @@ PROCESS_THREAD(ctk_process, ev, data) break; case CH_CURS_DOWN: ++window->y; - if(window->y + window->h + 2 >= height) { + if(window->y + window->h + 1 + CTK_CONF_MENUS >= height) { --window->y; } redraw = REDRAW_ALL; @@ -1900,10 +1904,10 @@ PROCESS_THREAD(ctk_process, ev, data) } if(redraw & REDRAW_ALL) { - do_redraw_all(1, height); + do_redraw_all(CTK_CONF_MENUS, height); #if CTK_CONF_MENUS } else if(redraw & REDRAW_MENUPART) { - do_redraw_all(1, maxnitems + 1); + do_redraw_all(CTK_CONF_MENUS, maxnitems + 1); } else if(redraw & REDRAW_MENUS) { ctk_draw_menus(&menus); #endif /* CTK_CONF_MENUS */