diff --git a/common/main/newmenu.h b/common/main/newmenu.h index 36971ac20..c139f20fd 100644 --- a/common/main/newmenu.h +++ b/common/main/newmenu.h @@ -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 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(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) diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index 81be308e1..1fd3be225 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -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: diff --git a/similar/main/newmenu.cpp b/similar/main/newmenu.cpp index bbcb0d52f..172448ed4 100644 --- a/similar/main/newmenu.cpp +++ b/similar/main/newmenu.cpp @@ -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;