SelectionListener called twice

Mitja mitja_ursic at yahoo.com
Fri Nov 13 09:43:47 PST 2009


Mitja Wrote:

> SelectionListener for calendar is called twice after button has been pressed. You have to select other than today's date first.
> I want for the listener to trigger only once.
> 
> What am I doing wrong?
> 
module datetime;

import Clock = tango.time.Clock;
import tango.io.Stdout;

import dwt.DWT;
import dwt.widgets.Button;
import dwt.widgets.Shell;
import dwt.widgets.Display;
import dwt.widgets.DateTime;
import dwt.layout.GridLayout;
import dwt.widgets.Listener;
import dwt.widgets.Event;
import dwt.events.SelectionAdapter;
import dwt.events.SelectionEvent;

void main()
{
    Display display = new Display;
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, false));

    DateTime calendar = new DateTime(shell, DWT.CALENDAR);

    calendar.addSelectionListener(new class(calendar) SelectionAdapter
    {
	DateTime cal;
	this(DateTime cal)
	{
	    this.cal = calendar;
	}
	public void widgetSelected(SelectionEvent e)
	{
	    Stdout("selected").newline;
	}
    });

    Button b = new Button(shell, DWT.NONE);
    b.setText("TODAY");

    b.addListener(DWT.Selection, new class(calendar) Listener
    {
	DateTime cal;
	this(DateTime d)
	{
	    this.cal = calendar;
	}
	public void handleEvent(Event event)
	{
	    auto date = Clock.Clock().toDate.date;
	    this.cal.setDate(date.year, date.month - 1, date.day);
	}
    });    

    shell.open;
    while(!shell.isDisposed)
    {
	if(!display.readAndDispatch)
	    display.sleep;
    }
    display.dispose;
}



More information about the Digitalmars-d-dwt mailing list