public void ReCreateItems() { if (FilteredItems.Count == 0) { Filter(); } RemoveChild(Layout); if (Items.Count == 0) { ScrollArea.RemoveChild(Layout); Layout = new GridLayout(GUI, ScrollArea, 1, 1); Label label = new Label(GUI, Layout, NoItemsMessage, GUI.DefaultFont); Layout.SetComponentPosition(label, 0, 0, 1, 1); return; } int rows = Math.Max(FilteredItems.Count, 6); ScrollArea.RemoveChild(Layout); Layout = new GridLayout(GUI, ScrollArea, rows + 1, Columns.Count) { LocalBounds = new Rectangle(-ScrollArea.ScrollX, -ScrollArea.ScrollY, Math.Max(ScrollArea.LocalBounds.Width - 64, 200), rows * 40), HeightSizeMode = SizeMode.Fixed }; for (int i = 0; i < FilteredItems.Count; i++) { GItem currentResource = FilteredItems[i]; int j = 0; foreach (Column column in Columns) { GUIComponent item = CreateItem(column, FilteredItems[i], i + 1, j); item.OnClicked += () => ItemClicked(currentResource); int row = i; item.OnHover += () => HighlightRow(row + 1); j++; } } Layout.UpdateSizeRecursive(); }