GridLienzoPanel has a LienzoPanel at the heart of it; and it's PHYSICAL size is only what you can actually see on the screen (where as Stunner has, for example a LienzoPanel that is 2000x2000 pixels and hides the non-visible bit by putting it in a DIV (that is the size of the visible bit) with overflow hidden GridLienzoPanel then "decorates" the LienzoPanel with some fake scroll bars these fake scroll bars take their scroll offset/scroll position/scroll drag handle calculated from the "bounds of shapes on the canvas" ok, scrooll bars at html level? or canvas level? html level ok they're DIVs decorating the HTML canvas k on same page the fake scroll bars uses GridLienzoScrollBounds to get this info but what it means is this: the GridLienzoPanel may be 100x100 px but the "bounds of the shapes on the canvas" may be 1,000,000 x 1,000,000 px yep and so the fake scrollbars look like a tiny bit of the "whole view" is shown in the 100x100px canvas but the PHYSICAL LienzoPanel is only 100x100px ok that's the basis of it good now a bit more detail... hehe :) I mean how from the lienzo perspective GridLienzoPanel memory usage is limited to the physical size; whereas atm Stunner memory usage is limited to virtual size do you change the viewport? well, it's 2 way sync when the MousePanMediator changes the panel transform we update the scrollbars or when the user drags the scrollbar we update the LienzoPanel transform too let me dig.. karreiro, ^^ where's the "sync code" between scrollbar and LienzoPanel transform? (I'm looking, you may know quicker0 manstis looking for it too but the idea is to play with some transform attrbiutes finally, right? so at the lienzo layer level - the shapes are not updated so is it finally jsut a transform or viewport change? or is it more complex? roger600_, correct ok good nope, we just change the transform manstis the GridLienzoScrollHandler#onScroll method good - would like to see this code :) https://github.com/kiegroup/appformer/blob/232b3c4fe51e0c3a0972986a73d9965795fe2afe/uberfire-extensions/uberfire-wires/uberfire-wires-core/uberfire-wires-core-grids/src/main/java/org/uberfire/ext/wires/core/grids/client/widget/scrollbars/GridLienzoScrollHandler.java#L93-L97 manstis, but doing this way will end up on some implications on the use of the actual mediators (zoom, pan)? manstis, we use both in Stunner manstis, do we need to "sync" in some way the transforming attributes? makes sense? roger600_, I hear what you're saying... trying to find the code that goes from MousePanMediator to GridLienzoPanel syncing scrollbars.. manstis, karreiro ok good thanks guys, I'm just looking at this code too np ;-) in fact from here I shouldl be able to move forward.. so no worries, if you rememer something more good, otherwise I can start here going to run the code and put a break point in (easier!) roger600_, the link karreiro gave is good for "scrollbar -> viewport transform" just need to find the "viewport transform -> scrollbar" now manstis, ok I see the other way around manstis this one? https://github.com/kiegroup/appformer/blob/232b3c4fe51e0c3a0972986a73d9965795fe2afe/uberfire-extensions/uberfire-wires/uberfire-wires-core/uberfire-wires-core-grids/src/main/java/org/uberfire/ext/wires/core/grids/client/widget/scrollbars/GridLienzoScrollHandler.java#L106 karreiro, that looks like it to me :-) thanks roger600_, ^^ karreiro, could be... but this only applies to pan, so I understand we're not updating the scale attributes, just translations? anyway will keep looking roger600_, RestrictedMousePanMediator is a MousePanMediator that prevents panning beyond the "bounds of shapes on the canvas" manstis, ok good manstis, i see manstis, it's updating the view port attributes for Guided Decision Table this is not a problem, Users can drag a shape which increases the bounds so changes the scrollbars etc manstis, and doing sync with the scrolls manstis, got this part ok manstis, so what I should refactor from here manstis, looks like just the panel and the related classes/handlers manstis, just a few pieces roger600_, GDT supports zoom and pan; and this uses "infinite canvas" so we must have pan and zoom covered somewhere! manstis, ok good np roger600_, you might, short term, just re-do similar for stunner panel/canvas manstis roger600_ I'm getting late for the swimming class. See you tomorrow 👋 ;-) roger600_, atm Guided Decision Tables, new DMN Editor (grid view) and new Simulation Testing editor use GridLienzoPanel manstis, do it makes sense refactoring this to a pure lienzo level? karreiro, ^ bye karreiro thank-you this way we could essily reuse from wires and stunner roger600_, yes it does 100% make sense manstis, ok good manstis, I think so also manstis, so will start doing this - on a pure lienzo app manstis, trying this code ok. thanks and getting to upper layers trying to also refactor wires