view: graph: Implement gtk::Scrollable and do not render content outside the displayed area
The graphview widget now implements the gtk::Scrollable
interface, so it is no longer wrapped inside a gtk::Viewport
when used in a gtk::ScrollWindow
anymore.
Instead, it repositions its content itself when scrolled, and also skips rendering any content that is not inside the visible area, which should improve performance
when the graph becomes big.
This is required for !30 (merged), as performance without these optimizations and high zoom levels is simply bad.
This commit also makes the canvas a fixed size as suggested in #30, with much space to each side from the starting area. This will hopefully improve user experience, as the view can now be moved around more freely, and nodes can be dragged left and above the starting area.
It's a little easy to "get lost" with the entire graph outside view with this change, but future MRs (zooming out, minimap) should improve this.
At the moment, the background does not scroll with the graph, so I'd like to try to fix that too before merging this, but it's not a big problem.