Skip to content

Commit e8d056b

Browse files
committed
ui: overlay menu: draw sidebar when open_submenu
1 parent 77469b5 commit e8d056b

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

src/window/overlay_menu.cpp

+20-16
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "input/input.h"
1515
#include "io/gamefiles/lang.h"
1616
#include "window/window_city.h"
17+
#include "widget/widget_sidebar.h"
1718
#include "game/game.h"
1819

1920
static void button_menu_item(int index, int param2);
@@ -127,17 +128,18 @@ struct overlay_menu_data_t {
127128

128129
overlay_menu_data_t g_overlay_menu_data;
129130

130-
static void init(void) {
131+
static void init() {
131132
auto& data = g_overlay_menu_data;
132133
data.selected_submenu = 0;
133-
data.num_submenu_items = 0;
134+
data.num_submenu_items = 0;
134135
}
135136

136-
static void draw_background(void) {
137+
static void window_overlay_draw_background() {
137138
window_city_draw_panels();
139+
widget_sidebar_city_draw_foreground();
138140
}
139141

140-
static int get_sidebar_x_offset(void) {
142+
static int get_sidebar_x_offset() {
141143
vec2i view_pos, view_size;
142144
const view_data_t &viewport = city_view_viewport();
143145
city_view_get_viewport(viewport, view_pos, view_size);
@@ -190,7 +192,7 @@ const char* game_state_overlay_text(int index) {
190192
return (const char*)lang_get_string(e_text_overlay_menu, index);
191193
}
192194

193-
static void draw_foreground() {
195+
static void window_overlay_draw_foreground() {
194196
painter ctx = game.painter();
195197
auto& data = g_overlay_menu_data;
196198
window_city_draw();
@@ -231,14 +233,16 @@ static void open_submenu(int index, int keep_open) {
231233

232234
static void close_submenu(void) {
233235
auto& data = g_overlay_menu_data;
234-
data.keep_submenu_open = 0;
235-
data.selected_menu = 0;
236-
data.selected_submenu = 0;
237-
data.num_submenu_items = 0;
238-
window_invalidate();
236+
if (data.selected_menu || data.selected_submenu) {
237+
data.keep_submenu_open = 0;
238+
data.selected_menu = 0;
239+
data.selected_submenu = 0;
240+
data.num_submenu_items = 0;
241+
window_invalidate();
242+
}
239243
}
240244

241-
static void handle_submenu_focus(void) {
245+
static void window_overlay_handle_submenu_focus(void) {
242246
auto& data = g_overlay_menu_data;
243247
if (data.menu_focus_button_id || data.submenu_focus_button_id) {
244248
data.submenu_focus_time = time_get_millis();
@@ -250,14 +254,14 @@ static void handle_submenu_focus(void) {
250254
}
251255
}
252256

253-
static void handle_input(const mouse* m, const hotkeys* h) {
257+
static void window_overlay_handle_input(const mouse* m, const hotkeys* h) {
254258
auto& data = g_overlay_menu_data;
255259
int x_offset = get_sidebar_x_offset();
256260
bool handled = false;
257261
handled |= !!generic_buttons_handle_mouse(m, {x_offset - 170, 72}, menu_buttons, 8, &data.menu_focus_button_id);
258262

259263
if (!data.keep_submenu_open) {
260-
handle_submenu_focus();
264+
window_overlay_handle_submenu_focus();
261265
}
262266

263267
if (data.selected_submenu) {
@@ -302,9 +306,9 @@ static void button_submenu_item(int index, int param2) {
302306
void window_overlay_menu_show(void) {
303307
window_type window = {
304308
WINDOW_OVERLAY_MENU,
305-
draw_background,
306-
draw_foreground,
307-
handle_input
309+
window_overlay_draw_background,
310+
window_overlay_draw_foreground,
311+
window_overlay_handle_input
308312
};
309313
init();
310314
window_show(&window);

0 commit comments

Comments
 (0)