public override void DoWindowContents(UnityEngine.Rect inRect) { Rect outRect = filterModel.DoFilterWindowContent(inRect); items = filterModel.Sort(items); Rect rect = new Rect(0f, 0f, totalOptionsWidth > 0 ? totalOptionsWidth : outRect.width - 16f, outRect.height - QOLMod.HorizontalScrollbarHeight()); Widgets.BeginScrollView(outRect, ref this.scrollPosition, rect, true); this.listing = new Listing_Standard(); this.listing.ColumnWidth = (outRect.width - 16f - 51f) / ((float)numOfColumns); this.listing.Begin(rect); this.DoListingItems(); //we determine the correct width after rendering, basically dragging one frame behind in favor of rendering a layout frame. Rect rectFinal = this.listing.GetRect(0); this.listing.End(); totalOptionsWidth = rectFinal.x + rectFinal.width + Listing.ColumnSpacing; Widgets.EndScrollView(); }