Status: New
Owner: ----

New issue 179 by fernando.loizides: event listeners are automatically created even if disabled
http://code.google.com/p/piccolo2d/issues/detail?id=179

What steps will reproduce the problem?

I think that there is a BUG that creates a new form that
AUTOMATICALLY creates a new PanEventHandler by default probably
whenever a new event handler is created (PDragevent). Therefore, if you:

1) Disable the pan event listener
2) add a drag event listener
3) remove the drag event listener
4) create a new pan event listener

you end up with two pan event listeners even if you previously disabled the
pan event.

Therefore you need to remove it always EVEN if you have already
instructed it to remove it in the first place.

The following code creates a double space pan action when the steps above
are followed:

private void handTool_Click(object sender, System.EventArgs e)
            {
                Canvas.RemoveInputEventListener(drag);
                Canvas.RemoveInputEventListener(pan);
                Canvas.AddInputEventListener(pan);
            }
            private void dragTool_Click(object sender,
System.EventArgs e)
            {
                Canvas.RemoveInputEventListener(drag);
                    Canvas.RemoveInputEventListener(pan);
                Canvas.AddInputEventListener(drag);
            }
drag and pan are declared after my namespace:
public partial class Form1 : PForm
    {
        PDragEventHandler drag = new PDragEventHandler();
        PPanEventHandler pan = new PPanEventHandler();

The solution (hacky way of doing it) is:


private void handTool_Click(object sender, System.EventArgs e)
            {
                    Canvas.RemoveInputEventListener(drag);
Canvas.RemoveInputEventListener(Canvas.PanEventHandler);
Canvas.AddInputEventListener(Canvas.PanEventHandler);
            }
            private void dragTool_Click(object sender,
System.EventArgs e)
            {
Canvas.RemoveInputEventListener(Canvas.PanEventHandler);
                Canvas.RemoveInputEventListener(drag);
                Canvas.AddInputEventListener(drag);
            }


Best,

Fernando Loizides







--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en

Reply via email to