From 1120b6ae0dd997b67e178b903fc32c1a169f1448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 22 Jan 2016 00:21:44 +0100 Subject: [PATCH] Make custom_bg fit the whole "selected" area in ItemLists Closes #3096 --- scene/gui/item_list.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index f035cb77222..2d2cabfc010 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -826,22 +826,25 @@ void ItemList::_notification(int p_what) { if (current_columns==1) { rcache.size.width = width-rcache.pos.x; } - if (items[i].custom_bg.a>0.001) { - Rect2 r=rcache; - r.pos+=base_ofs; - draw_rect(r,items[i].custom_bg); - } + + Rect2 r=rcache; + r.pos+=base_ofs; + + // Use stylebox to dimension potential bg color, even if not selected + r.pos.x-=sbsel->get_margin(MARGIN_LEFT); + r.size.x+=sbsel->get_margin(MARGIN_LEFT)+sbsel->get_margin(MARGIN_RIGHT); + r.pos.y-=sbsel->get_margin(MARGIN_TOP); + r.size.y+=sbsel->get_margin(MARGIN_TOP)+sbsel->get_margin(MARGIN_BOTTOM); + if (items[i].selected) { - Rect2 r=rcache; - r.pos+=base_ofs; - - r.pos.x-=sbsel->get_margin(MARGIN_LEFT); - r.size.x+=sbsel->get_margin(MARGIN_LEFT)+sbsel->get_margin(MARGIN_RIGHT); - r.pos.y-=sbsel->get_margin(MARGIN_TOP); - r.size.y+=sbsel->get_margin(MARGIN_TOP)+sbsel->get_margin(MARGIN_BOTTOM); - draw_style_box(sbsel,r); - + } + if (items[i].custom_bg.a>0.001) { + r.pos.x+=2; + r.size.x-=4; + r.pos.y+=2; + r.size.y-=4; + draw_rect(r,items[i].custom_bg); }