Id start with this, and work my way to something that works on all platforms:
This may brake in the future though.
Function GadgetClass:Int( gadget:TGadget) ?Win32 Return TWin32Gadget(gadget).Class ?MacOS Return TNSGadget(gadget).Class ?Linux Select TFLWidget(gadget).FLType Case FL_WINDOW Return GADGET_WINDOW Case FL_BUTTON, FL_CHECKBUTTON, FL_ROUNDBUTTON Return GADGET_BUTTON Case FL_PANEL, FL_GROUP Return GADGET_PANEL Case FL_INPUT, FL_PASSWORD Return GADGET_TEXTFIELD Case FL_TABS Return GADGET_TABBER Case FL_BROWSER Return GADGET_HTMLVIEW Case FL_CHOICE Return GADGET_COMBOBOX Case FL_TEXTEDITOR Return GADGET_TEXTAREA Case FL_TEXTDISPLAY Return GADGET_LABEL Case FL_TOOLBAR Return GADGET_TOOLBAR Case FL_PROGBAR Return GADGET_PROGBAR Case FL_SLIDER, FL_SCROLLBAR Return GADGET_SLIDER Case FL_CANVAS Return GADGET_CANVAS Case FL_MENUITEM Return GADGET_MENUITEM Case FL_DESKTOP Return GADGET_DESKTOP Case FL_TIMER Return GADGET_TIMER ' i dont know, need linux to test 'Case FL_HELPVIEW, FL_BOX, FL_MENUBAR, FL_PACK Default Return -1 EndSelect ? EndFunction
This may brake in the future though.