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_subtitle subtitle;
|
||||
const menu_filename filename;
|
||||
grs_canvas &parent_canvas;
|
||||
const tiny_mode_flag tiny_mode;
|
||||
const tab_processing_flag tabs_flag;
|
||||
const uint8_t max_on_menu;
|
||||
|
@ -314,9 +315,10 @@ struct newmenu_layout
|
|||
uint8_t mouse_state;
|
||||
const partial_range_t<newmenu_item *> items;
|
||||
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),
|
||||
title(title), subtitle(subtitle), filename(filename),
|
||||
parent_canvas(parent_canvas),
|
||||
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)),
|
||||
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);
|
||||
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)
|
||||
|
|
|
@ -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);
|
||||
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_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
|
||||
|
@ -793,8 +794,7 @@ window_event_result main_menu::event_handler(const d_event &event)
|
|||
break;
|
||||
|
||||
case EVENT_NEWMENU_DRAW:
|
||||
gr_set_default_canvas();
|
||||
draw_copyright(*grd_curcanv, *GAME_FONT);
|
||||
draw_copyright(parent_canvas, *GAME_FONT);
|
||||
break;
|
||||
|
||||
case EVENT_NEWMENU_SELECTED:
|
||||
|
|
|
@ -1303,8 +1303,7 @@ static void newmenu_create_structure(newmenu_layout &menu, const grs_font &cv_fo
|
|||
{
|
||||
int nmenus;
|
||||
grs_canvas &save_canvas = *grd_curcanv;
|
||||
gr_set_default_canvas();
|
||||
auto &canvas = *grd_curcanv;
|
||||
auto &canvas = menu.parent_canvas;
|
||||
|
||||
auto iterative_layout_max_width = 0u;
|
||||
auto iterative_layout_max_height = 0u;
|
||||
|
|
Loading…
Reference in a new issue