Beachten Sie, dass Kontextmenü-Ereignisse dann über den Standardmechanismus
Menuitem.Selected und nicht über einen speziellen
Kontextmenü-Ereignishandler geliefert werden. Da Sie dasselbe
Menüobjekt für mehrere Widgets verwenden können, benötigen Sie
eine Möglichkeit, das Widget herauszufinden, dessen Kontextmenü
das Ereignis ausgelöst hat. Um Ihnen diese Informationen zu
liefern, enthält die Ereignismeldung einen zusätzlichen Eintrag
namens Parent
, der die ID des Widgets enthält. Dadurch können
Sie dasselbe Menüobjekt als Kontextmenü für mehrere übergeordnete
Widgets verwenden.
Ab RapaGUI 2.0 können Sie auch eine Benachrichtigung über das
Attribut einrichten. In diesem Fall wird Ihr Ereignis-Handler
aufgerufen, unmittelbar bevor RapaGUI das Kontextmenü anzeigt.
Sie können dann entweder False
für kein Kontextmenü zurückgeben
oder moai.Set() auf Area.ContextMenu
verwenden, um das Kontextmenü festzulegen, das angezeigt werden
soll. Dies ist sehr nützlich, um das Kontextmenü anzupassen,
je nachdem, wo die rechte Maustaste geklickt wurde. Die Position
wird an Ihren Ereignis-Handler weitergegeben. Falls Sie Area.ContextMenu
überwachen, werden Ihrem Ereignis-Handler abhängig vom übergeordneten
Widget des Kontextmenüs auch einige zusätzliche Informationen
übergeben. Hier ist eine Übersicht über diese zusätzlichen Nachrichtenfelder:
X
Y
CursorPos
Row
Column
Item
AmigaOS-Benutzer beachten bitte, dass MUI die Freigabe von Kontextmenü-Objekten über Fenster hinweg nicht erlaubt. Es ist nicht möglich, dasselbe Menüobjekt mit Widgets in verschiedenen Fenstern zu verwenden. Es ist in Ordnung, ein Menüobjekt für mehrere Widgets im selben Fenster zu verwenden, aber nicht für Widgets in einem anderen Fenster. Alle anderen Plattformen haben diese Einschränkung nicht, nur AmigaOS ist hier betroffen.
Um ein Kontextmenü vollständig zu entfernen, übergeben Sie diesem Attribut den speziellen String "(none)".
Siehe Kontextmenüs für ein Beispiel.