From 965b4cfdca3286a353a9f67b1382b6319d2eef8d Mon Sep 17 00:00:00 2001 From: kanyao1230 Date: Thu, 11 Jun 2026 01:57:57 +0900 Subject: [PATCH 1/2] BUG FIX: prevent combobox droplist scroll reset on every frame Only call request_size() when the droplist width actually changes, avoiding the set_size() -> show_focused() chain that reset scroll position. Co-Authored-By: Claude Sonnet 4.6 --- gui/components/gui_combobox.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui/components/gui_combobox.cc b/gui/components/gui_combobox.cc index 50fb003f825..05b2f3fc800 100644 --- a/gui/components/gui_combobox.cc +++ b/gui/components/gui_combobox.cc @@ -359,7 +359,9 @@ void gui_combobox_t::set_size(scr_size size) closed_size = size; gui_component_t::set_size( size ); - droplist.request_size(scr_size(this->size.w, droplist.get_size().h)); + if( droplist.get_size().w != this->size.w ) { + droplist.request_size(scr_size(this->size.w, droplist.get_size().h)); + } textinp.set_size( scr_size( size.w - bt_prev.get_size().w - bt_next.get_size().w - D_H_SPACE, closed_size.h ) ); set_pos(get_pos()); From 119ebaa7b52772773db875d72e54255a5fe1ed56 Mon Sep 17 00:00:00 2001 From: kanyao1230 Date: Thu, 11 Jun 2026 02:32:11 +0900 Subject: [PATCH 2/2] BUG FIX: fix upper section width flickering during convoy window resize set_windowsize was called after gui_frame_t::draw, causing the layout to be recomputed only after rendering. During resize this meant each frame was drawn with the previous frame's layout. Moving set_windowsize before draw ensures the layout matches the current window size. Co-Authored-By: Claude Sonnet 4.6 --- gui/convoi_info_t.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gui/convoi_info_t.cc b/gui/convoi_info_t.cc index dc0d8765504..8fd0f12e0b3 100644 --- a/gui/convoi_info_t.cc +++ b/gui/convoi_info_t.cc @@ -495,9 +495,10 @@ void convoi_info_t::draw(scr_coord pos, scr_size size) route_show_button.pressed = is_route_show; route_show_button.enable(); + // update layout before rendering so upper section width matches current window size + set_windowsize(size); // all gui stuff set => display it gui_frame_t::draw(pos, size); - set_windowsize(size); }