Hi,
I commit new Accelerator event handling.
- GUI.h :
+ Add FindChildWindowsProc prototype and search typedef struct.
- GUI_Events.cpp :
+ Rewrite DoEvent_Accelerator.
- GUI_Helpers.cpp :
+ Add FindChildWindowsProc for search a child with specific name.
> >
> > 1) if accelerator define like : "key" => sub { } or "key" => \&mysub
> > - Call this function with Window Self + accelerator name.
>
> This one will clearly wind up being the fastest to locate and invoke,
> under NEM.
Yes, it's faster way.
> > 2) if accelerator define like : "Key" => "Name"
> > - Find a window called "Name" in current window hierarchy and
> > call -onClick event if exist with Window Self .
> > - Call Window -onClick event if exist with Self + Name (-acc is
availlable
> > only for Window and Dialog so Click event isn't use for specific stuff).
>
> Yes, -accel is only available for those two, but I could imagine other
> uses for Click event on the "white space" of a parent window. So that
> is why I suggested making a new "Accel" event, so one could specify
> -onAccel => sub {...}
Actually, i keep Click because :
- I win an NEM event flag ;o)
- For Click event on the "white space", it's not standard window event.
And, i think it's more application implementation to use KeyDown event
and check white space.
- We can reuse Click event for menu (like Jez suggest) (so accelerator
and menu call same method).
When your menu is "text" => "name" like in OEM.
We can call Window -click event if we can't found a OEM event
handler.
But of course it's easy to change.
> > - Check for OEM Name_Click and call it if exist.
>
> This last would only be done for OEM mode, and BOTH mode, I presume.
Actually, i call it, only if haven't find a named child window or named
child window is OEM/BOTH.
I can call Unknow_Click method like in OEM (for compatibility).
Laurent