Hallo Andreas,
kann man eigentlich Klick und Doppelklick gegeneinander abgrenzen?
Nein. Schlicht und ergreifend: Nein.
In einem ereignisgesteuerten GUI mit Mausbedienung, ganz gleich, ob das nun Windows, KDE, OS-X oder was auch immer ist, wird immer beim ersten Mausklick schon mal das Ereignis "Einzelklick" signalisiert. Normalerweise wird das Programm daraufhin sofort die zugeordnete Funktion ausführen. Kurze Zeit später folgt dann ein zweiter Klick, und anhand der seit dem letzten Klick verstrichenen Zeit entscheidet das GUI nun, ob es ein weiteres "Einzelklick"-Ereignis an die Applikation übermittelt oder ein "Doppelklick".
Daraus folgt:
Mit einem Einzelklick darfst du nur Funktionen ausführen, die als Vorbereitung für den Doppelklick dienen könnten.
Beispiel aus dem Windows-Explorer: Mit einem Einzelklick wird eine Datei markiert, mit dem Doppelklick geöffnet. Das vorherige Markieren fügt sich harmonisch in diese Ereigniskette ein. Ein Widerspruch wäre nun z.B., wenn man mit dem Einzelklick das Eigenschaften-Fenster öffnen wollte, mit einem Doppelklick aber die entsprechende Datei öffnen. Denn dann hätte das Explorer-Fenster beim zweiten Klick schon längst den Focus verloren, weil der Eigenschaften-Dialog hochkam.
Klar was ich sagen möchte?
wie aus dem Listing schon hervorgeht, soll der Doppelklick Vorrang haben und in seinem Fall der einfache Klick-Handler gar nicht ausgeführt werden. Ich habe also zwei Aufrufe in meinem Objekt: onClick und onDblClick.
Das geht nicht, oder nur mit einem Umweg, den du selbst schon umrissen hast.
So long,
Martin