Browse Source

Draw separators before selected style boxes

(cherry picked from commit 749db002276d49c472fb48fab17aac72483f15ab)
Chia-Hsiang Cheng 2 years ago
parent
commit
cdc0e00557
1 changed files with 26 additions and 26 deletions
  1. 26 26
      scene/gui/item_list.cpp

+ 26 - 26
scene/gui/item_list.cpp

@@ -1077,6 +1077,32 @@ void ItemList::_notification(int p_what) {
 			// Define a visible frame to check against and optimize drawing.
 			// Define a visible frame to check against and optimize drawing.
 			const Rect2 clip(-base_ofs, size);
 			const Rect2 clip(-base_ofs, size);
 
 
+			// Do a binary search to find the first separator that is below clip_position.y.
+			int first_visible_separator = 0;
+			{
+				int lo = 0;
+				int hi = separators.size();
+				while (lo < hi) {
+					const int mid = (lo + hi) / 2;
+					if (separators[mid] < clip.position.y) {
+						lo = mid + 1;
+					} else {
+						hi = mid;
+					}
+				}
+				first_visible_separator = lo;
+			}
+
+			// Draw visible separators.
+			for (int i = first_visible_separator; i < separators.size(); i++) {
+				if (separators[i] > clip.position.y + clip.size.y) {
+					break; // done
+				}
+
+				const int y = base_ofs.y + separators[i];
+				draw_line(Vector2(theme_cache.panel_style->get_margin(SIDE_LEFT), y), Vector2(width, y), theme_cache.guide_color);
+			}
+
 			// Do a binary search to find the first item whose rect reaches below clip.position.y.
 			// Do a binary search to find the first item whose rect reaches below clip.position.y.
 			int first_item_visible;
 			int first_item_visible;
 			{
 			{
@@ -1298,32 +1324,6 @@ void ItemList::_notification(int p_what) {
 					draw_style_box(cursor, r);
 					draw_style_box(cursor, r);
 				}
 				}
 			}
 			}
-
-			// Do a binary search to find the first separator that is below clip_position.y.
-			int first_visible_separator = 0;
-			{
-				int lo = 0;
-				int hi = separators.size();
-				while (lo < hi) {
-					const int mid = (lo + hi) / 2;
-					if (separators[mid] < clip.position.y) {
-						lo = mid + 1;
-					} else {
-						hi = mid;
-					}
-				}
-				first_visible_separator = lo;
-			}
-
-			// Draw visible separators.
-			for (int i = first_visible_separator; i < separators.size(); i++) {
-				if (separators[i] > clip.position.y + clip.size.y) {
-					break; // done
-				}
-
-				const int y = base_ofs.y + separators[i];
-				draw_line(Vector2(theme_cache.panel_style->get_margin(SIDE_LEFT), y), Vector2(width, y), theme_cache.guide_color);
-			}
 		} break;
 		} break;
 	}
 	}
 }
 }