Still hammering away at the big GMod update. And I’m loving it. It feels good to fix all of the stuff that has annoyed me over the years – but I’ve been too scared to touch. I don’t think I’m going to break as much stuff as people expect – I haven’t come across anything on toybox that has broken in the new update.
One of the things I’m changing is DPanelList. If you’ve done a lot of GUI work in Lua you probably know what this is. It’s a panel that organises panels inside itself, and adds a scrollbar if it overflows. It’s also a huge mess. Over the years it’s been added to and bent to be used in situations it really shouldn’t have been.
In the new update I’m phasing it out. I’m phasing the way it works out too. We have a panel:GetChildren() now – so there’s no need for a panel like DPanelList to keep track of its children in an .Items table. Because we’re using GetChildren the order they’re stored in becomes important (the first one will be at the top, then the second one etc).
Instead of having a one size fits all solution like DPanelList – I’m moving towards general layout panels (DLineLayout, DIconLayout). These new layout panels don’t automatically add a scrollbar, so you have to dock them to a DScrollPanel to get scrolling functionality. This cleans everything up.
I probably won’t chop DPanelList out of the next update completely – but it won’t be updated with the newer derma features like the new style or the drag and drop stuff – and it’s usage will be discouraged.