# Is it a bug or a feature?



## dzim (27. Nov 2008)

Hallo zusammen,

vor einigen Tagen ist mir etwas aufgefallen, dass entweder mich als totalen Blödmann in Sachen Programmierung entlarvt, oder schlicht ein Bug ist.

Folgende Aufgabe:
* Lege DateTime-Widget an (Style-Bit auf Calendar)
* füge Listener mit EventTypeBit SWT.Selection an das Object und beobachte das Verhalten
* das selbe mit expliziten SelectionListener

Meine Beobachtung ist:
* SelectionListener geht, einfacher Listener nicht

Das ist blöd insofern, dass ich primär den einfachen Listener verwende und über den EventTypen festlege, wie ein Widgted damit umzugehen hat. Ich finde das besser, aber das ist wahrscheinlich Geschmackssache.
Kennt ihr das Problem, könnt ihr es überhaupt reproduzieren?
Was ist da eure Erfahrung?


----------



## Vayu (27. Nov 2008)

sollte eigentlich funktionieren, da der TypedListener auch auf SWT.Selection abfragt, bevor er alle SelectionListener informiert


```
case SWT.Selection: {
			/* Fields set by Sash */
			SelectionEvent event = new SelectionEvent (e);
			((SelectionListener) eventListener).widgetSelected (event);			
			e.x = event.x;
			e.y = event.y;
			e.doit = event.doit;
			break;
		}
```


----------



## dzim (27. Nov 2008)

sollte - ich weiß nicht ob es ein lokales Problem ist, aber es geht halt nicht...
Ich bin mir nicht sicher, woran es genau liegt, fakt ist, es will nicht.

das einzige Problem könnte sein, das explizit die addSelectionListener() implementiert/überschrieben wurde

```
public void addSelectionListener (SelectionListener listener) {
	checkWidget ();
	if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);
	TypedListener typedListener = new TypedListener (listener);
	addListener (SWT.Selection, typedListener);
	addListener (SWT.DefaultSelection, typedListener);
}
```
Was vielleicht dafür sorgt, dass beim addListener(eventType,listener) irgendwas schief geht.
Ich weiß, weit hergeholt, aber das ist das einzige, wie ich es mir gerade erklären könnte...


----------



## Vayu (28. Nov 2008)

phew ... sieht eigentlich korrekt aus ... es sei denn du fliegst jedesmal bei checkWidget() raus und kriegst es nicht mit  dann wird natürlich auch kein Listener geaddet


----------

