Good point Reuben.
I am convinced we don't go in the right direction when you start to see "rightClick" events in the 4gl code.
Why not?
Isn't a mouse click the equivalent of a function-key. Its just that the "function-key" is handily positioned at the top of the mouse underneath your fingertips. Through left, right, double click, mouse down, mouse up etc you have more than 1 "function-key"
However what you do get with a mouse button event is some indication of position. Whereas a normal function-key press you can associate with what the current field is, the mouse-click will typically be associated with the current position of the mouse, or whatever widget the mouse cursor is currently positioned over.
I don't think this type of code removes the abstraction...
e.g.
ON ACTION mycontextmenu
CALL mycontextmenu(FGL_DIALOG_GET_MOUSE_CURSOR_WIDGET_TYPE(),
FGL_DIALOG_GET_MOUSE_CURSOR_WIDGET_NAME())
<ActionDefault
name="mycontextmenu"
acceleratorName="Right-Click"
acceleratorName2="Shift-F10" />
Other mouse actions we are similarly limited in, include the ability to identify what field a user double-clicked on in array, we can tell the row, but not the column. Also within canvas the user can't interact with the canvas using the mouse at all because we can't tie an event to a mouse click, or identify the cursor position within the canvas.