Hello again, I think I understand the reason of my problem (at least the beginning). In my application, I use a tabbed pane to show the various SVG documents. When I load a new document, sometimes the canvas of some of the previously loaded tabs fire selection events. I never do anything to disallow not showing tabs to fire selection events, do I need to do that (I think so), and how ? (may be set eventsEnabled to false ?).
Herv� Girod wrote: > > > > I have two questions about Batik. They are about the current 1.6 > > > version, but I think they also apply to the previous version : > Hi, > > > > > > > I write an application using Batik at its core, to show and modify > > > SVG images. I have sometimes an IllegalComponentStateException > > > "component must be showing on the screen to determine its location" when > > > loading a SVG file in a JSVGCanvas, where the class MouseMoveRunnable > > > (used internally in JSVGComponent) perform the run() method (the code is > > > : eventDispatcher.mouseMoved(event)). Is it due to Batik, or do I use > > > wrongly the JSVGCanvas class ? > > > > I suspect that it is something in your code but I'm not sure how it > > would happen. Are you artificially dispatching events to the canvas? > > There is even a check for the component being visible before we call > > getLocationOnScreen so I have a really hard time understanding where > > this one comes from. > > After looking at my code, here are some facts to help understanding my > problem (or so I think) : > * I wanted to be able to select shapes (not only text), so I created a > ShapeSelectionManager class in the event handlng initialization, in the > pattern of Batik TextSelectionManager. This component dispatch events as the > TextSelectionManager do. To do this, I subclassed the JSVGCanvas class. > * I looked at the code of AWTEventDispatcher, to see if I could detect > what in my code could create that, and as you say, you check if the > component is showing before getting its location on the screen !! > * and I think the most important : even if I register the listeners on > gvt build events provided by the canvas, I don't use the "gvtBuildCompleted" > event, so may be my problem is due to a sort of race condition (gvt not > finished sometimes when I check for mouse events on the canvas). Do I have > to disable mouse events before the build is completed or something like that ? --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
