From: Sebastian B. <sb...@us...> - 2001-09-30 09:39:50
|
Update of /cvsroot/simplemail/amiga-mui In directory usw-pr-cvs1:/tmp/cvs-serv3401 Modified Files: iconclass.h iconclass.c Log Message: MUIA_Icon_DoubleClick attribute added Index: iconclass.h =================================================================== RCS file: /cvsroot/simplemail/amiga-mui/iconclass.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** iconclass.h 2001/02/28 19:02:56 1.1 --- iconclass.h 2001/09/30 09:39:47 1.2 *************** *** 30,33 **** --- 30,34 ---- #define MUIA_Icon_MimeType (TAG_USER+0x45687a) /* (STRPTR) IS. */ #define MUIA_Icon_MimeSubType (TAG_USER+0x45687b) /* (STRPTR) IS. */ + #define MUIA_Icon_DoubleClick (TAG_USER+0x45687c) /* (BOOL) ...N */ int create_icon_class(void); Index: iconclass.c =================================================================== RCS file: /cvsroot/simplemail/amiga-mui/iconclass.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** iconclass.c 2001/06/10 15:52:10 1.4 --- iconclass.c 2001/09/30 09:39:47 1.5 *************** *** 50,53 **** --- 50,56 ---- char *subtype; struct DiskObject *obj; + + struct MUI_EventHandlerNode ehnode; + ULONG select_secs,select_mics; }; *************** *** 56,60 **** STATIC ULONG Icon_New(struct IClass *cl,Object *obj,struct opSet *msg) { ! struct DataTypes_Data *data; if (!(obj=(Object *)DoSuperNew(cl,obj, --- 59,63 ---- STATIC ULONG Icon_New(struct IClass *cl,Object *obj,struct opSet *msg) { ! struct Icon_Data *data; if (!(obj=(Object *)DoSuperNew(cl,obj, *************** *** 62,65 **** --- 65,70 ---- return 0; + data = (struct Icon_Data*)INST_DATA(cl,obj); + Icon_Set(cl,obj,msg); return (ULONG)obj; *************** *** 103,106 **** --- 108,122 ---- } + STATIC ULONG Icon_Get(struct IClass *cl, Object *obj, struct opGet *msg) + { + if (msg->opg_AttrID == MUIA_Icon_DoubleClick) + { + *msg->opg_Storage = 1; + return 1; + } + return DoSuperMethodA(cl,obj,(Msg)msg); + } + + STATIC ULONG Icon_Setup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg) { *************** *** 108,111 **** --- 124,129 ---- char *def; + if (!DoSuperMethodA(cl,obj,(Msg)msg)) return 0; + if (!mystricmp(data->type, "image")) def = "picture"; else if (!mystricmp(data->type, "audio")) def = "audio"; *************** *** 139,143 **** } ! return DoSuperMethodA(cl,obj,(Msg)msg); } --- 157,169 ---- } ! data->ehnode.ehn_Priority = -1; ! data->ehnode.ehn_Flags = 0; ! data->ehnode.ehn_Object = obj; ! data->ehnode.ehn_Class = cl; ! data->ehnode.ehn_Events = IDCMP_MOUSEBUTTONS; ! ! DoMethod(_win(obj), MUIM_Window_AddEventHandler, &data->ehnode); ! ! return 1; } *************** *** 145,148 **** --- 171,175 ---- { struct Icon_Data *data = (struct Icon_Data*)INST_DATA(cl,obj); + DoMethod(_win(obj), MUIM_Window_RemEventHandler, &data->ehnode); if (data->obj) FreeDiskObject(data->obj); DoSuperMethodA(cl,obj,msg); *************** *** 211,214 **** --- 238,262 ---- } + STATIC ULONG Icon_HandleEvent(struct IClass *cl, Object *obj, struct MUIP_HandleEvent *msg) + { + struct Icon_Data *data = (struct Icon_Data*)INST_DATA(cl,obj); + if (msg->imsg && msg->imsg->Class == IDCMP_MOUSEBUTTONS) + { + if (msg->imsg->Code == SELECTUP && _isinobject(obj,msg->imsg->MouseX,msg->imsg->MouseY)) + { + ULONG secs, mics; + CurrentTime(&secs,&mics); + + if (DoubleClick(data->select_secs,data->select_mics, secs, mics)) + { + set(obj,MUIA_Icon_DoubleClick, TRUE); + } + data->select_secs = secs; + data->select_mics = mics; + } + } + return 0; + } + STATIC ASM ULONG Icon_Dispatcher(register __a0 struct IClass *cl, register __a2 Object *obj, register __a1 Msg msg) { *************** *** 219,226 **** --- 267,276 ---- case OM_DISPOSE: Icon_Dispose(cl,obj,msg); return 0; case OM_SET: return Icon_Set(cl,obj,(struct opSet*)msg); + // case OM_GET: return Icon_Get(cl,obj,(struct opGet*)msg); case MUIM_AskMinMax: return Icon_AskMinMax(cl,obj,(struct MUIP_AskMinMax *)msg); case MUIM_Setup: return Icon_Setup(cl,obj,(struct MUIP_Setup*)msg); case MUIM_Cleanup: return Icon_Cleanup(cl,obj,msg); case MUIM_Draw: return Icon_Draw(cl,obj,(struct MUIP_Draw*)msg); + case MUIM_HandleEvent: return Icon_HandleEvent(cl,obj,(struct MUIP_HandleEvent*)msg); default: return DoSuperMethodA(cl,obj,msg); } |