Record parent canvas in newmenu
Use it to avoid resetting to the screen canvas when preparing the layout.
This commit is contained in:
parent
f9fa374ab4
commit
8d67bcddb0
|
@ -304,6 +304,7 @@ struct newmenu_layout
|
||||||
const menu_title title;
|
const menu_title title;
|
||||||
const menu_subtitle subtitle;
|
const menu_subtitle subtitle;
|
||||||
const menu_filename filename;
|
const menu_filename filename;
|
||||||
|
grs_canvas &parent_canvas;
|
||||||
const tiny_mode_flag tiny_mode;
|
const tiny_mode_flag tiny_mode;
|
||||||
const tab_processing_flag tabs_flag;
|
const tab_processing_flag tabs_flag;
|
||||||
const uint8_t max_on_menu;
|
const uint8_t max_on_menu;
|
||||||
|
@ -314,9 +315,10 @@ struct newmenu_layout
|
||||||
uint8_t mouse_state;
|
uint8_t mouse_state;
|
||||||
const partial_range_t<newmenu_item *> items;
|
const partial_range_t<newmenu_item *> items;
|
||||||
int scroll_offset = 0;
|
int scroll_offset = 0;
|
||||||
newmenu_layout(const menu_title title, const menu_subtitle subtitle, const menu_filename filename, const tiny_mode_flag tiny_mode, const tab_processing_flag tabs_flag, const adjusted_citem citem_init, const draw_box_flag draw_box) :
|
newmenu_layout(const menu_title title, const menu_subtitle subtitle, const menu_filename filename, grs_canvas &parent_canvas, const tiny_mode_flag tiny_mode, const tab_processing_flag tabs_flag, const adjusted_citem citem_init, const draw_box_flag draw_box) :
|
||||||
citem(citem_init.citem),
|
citem(citem_init.citem),
|
||||||
title(title), subtitle(subtitle), filename(filename),
|
title(title), subtitle(subtitle), filename(filename),
|
||||||
|
parent_canvas(parent_canvas),
|
||||||
tiny_mode(tiny_mode), tabs_flag(tabs_flag),
|
tiny_mode(tiny_mode), tabs_flag(tabs_flag),
|
||||||
max_on_menu(std::min<uint8_t>(citem_init.items.size(), tiny_mode != tiny_mode_flag::normal ? 21u : 14u)),
|
max_on_menu(std::min<uint8_t>(citem_init.items.size(), tiny_mode != tiny_mode_flag::normal ? 21u : 14u)),
|
||||||
all_text(citem_init.all_text),
|
all_text(citem_init.all_text),
|
||||||
|
@ -340,7 +342,7 @@ struct newmenu : newmenu_layout, window
|
||||||
{
|
{
|
||||||
using subfunction_type = int(*)(newmenu *menu, const d_event &event, void *userdata);
|
using subfunction_type = int(*)(newmenu *menu, const d_event &event, void *userdata);
|
||||||
newmenu(const menu_title title, const menu_subtitle subtitle, const menu_filename filename, const tiny_mode_flag tiny_mode, const tab_processing_flag tabs_flag, const adjusted_citem citem_init, grs_canvas &src, const draw_box_flag draw_box = draw_box_flag::menu_background) :
|
newmenu(const menu_title title, const menu_subtitle subtitle, const menu_filename filename, const tiny_mode_flag tiny_mode, const tab_processing_flag tabs_flag, const adjusted_citem citem_init, grs_canvas &src, const draw_box_flag draw_box = draw_box_flag::menu_background) :
|
||||||
newmenu_layout(title, subtitle, filename, tiny_mode, tabs_flag, citem_init, draw_box), window(src, x, y, w, h)
|
newmenu_layout(title, subtitle, filename, src, tiny_mode, tabs_flag, citem_init, draw_box), window(src, x, y, w, h)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
int *rval = nullptr; // Pointer to return value (for polling newmenus)
|
int *rval = nullptr; // Pointer to return value (for polling newmenus)
|
||||||
|
|
|
@ -642,9 +642,10 @@ static void draw_copyright(grs_canvas &canvas, grs_font &game_font)
|
||||||
{
|
{
|
||||||
gr_set_fontcolor(canvas, BM_XRGB(6, 6, 6), -1);
|
gr_set_fontcolor(canvas, BM_XRGB(6, 6, 6), -1);
|
||||||
const auto &&line_spacing = LINE_SPACING(game_font, game_font);
|
const auto &&line_spacing = LINE_SPACING(game_font, game_font);
|
||||||
gr_string(canvas, game_font, 0x8000, SHEIGHT - line_spacing, TXT_COPYRIGHT);
|
const auto bm_h = canvas.cv_bitmap.bm_h;
|
||||||
|
gr_string(canvas, game_font, 0x8000, bm_h - line_spacing, TXT_COPYRIGHT);
|
||||||
gr_set_fontcolor(canvas, BM_XRGB(25, 0, 0), -1);
|
gr_set_fontcolor(canvas, BM_XRGB(25, 0, 0), -1);
|
||||||
gr_string(canvas, game_font, 0x8000, SHEIGHT - (line_spacing * 2), DESCENT_VERSION);
|
gr_string(canvas, game_font, 0x8000, bm_h - (line_spacing * 2), DESCENT_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
//returns flag, true means quit menu
|
//returns flag, true means quit menu
|
||||||
|
@ -793,8 +794,7 @@ window_event_result main_menu::event_handler(const d_event &event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_NEWMENU_DRAW:
|
case EVENT_NEWMENU_DRAW:
|
||||||
gr_set_default_canvas();
|
draw_copyright(parent_canvas, *GAME_FONT);
|
||||||
draw_copyright(*grd_curcanv, *GAME_FONT);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_NEWMENU_SELECTED:
|
case EVENT_NEWMENU_SELECTED:
|
||||||
|
|
|
@ -1303,8 +1303,7 @@ static void newmenu_create_structure(newmenu_layout &menu, const grs_font &cv_fo
|
||||||
{
|
{
|
||||||
int nmenus;
|
int nmenus;
|
||||||
grs_canvas &save_canvas = *grd_curcanv;
|
grs_canvas &save_canvas = *grd_curcanv;
|
||||||
gr_set_default_canvas();
|
auto &canvas = menu.parent_canvas;
|
||||||
auto &canvas = *grd_curcanv;
|
|
||||||
|
|
||||||
auto iterative_layout_max_width = 0u;
|
auto iterative_layout_max_width = 0u;
|
||||||
auto iterative_layout_max_height = 0u;
|
auto iterative_layout_max_height = 0u;
|
||||||
|
|
Loading…
Reference in a new issue