Tabs to spaces, more consistent formatting.
[AROS.git] / workbench / libs / muimaster / classes / crawling.c
blob7d981c05749ef81bb572df30113a9d4bd5e88840
1 /*
2 Copyright © 2002-2003, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #define MUIMASTER_YES_INLINE_STDARG
8 #include <exec/memory.h>
9 #include <clib/alib_protos.h>
10 #include <proto/exec.h>
11 #include <proto/dos.h>
12 #include <proto/utility.h>
13 #include <proto/intuition.h>
14 #include <proto/muimaster.h>
16 #include <string.h>
17 #include <stdio.h>
19 #include "mui.h"
20 #include "muimaster_intern.h"
21 #include "support.h"
22 #include "support_classes.h"
23 #include "debug.h"
24 #include "crawling_private.h"
26 extern struct Library *MUIMasterBase;
28 IPTR Crawling__OM_NEW(struct IClass *cl, Object *obj, struct opSet *msg)
30 obj = (Object *) DoSuperNewTags
31 (cl, obj, NULL, TAG_MORE, (IPTR) msg->ops_AttrList);
33 if (obj)
35 struct Crawling_DATA *data = INST_DATA(cl, obj);
37 data->ehn.ehn_Events = 0;
38 data->ehn.ehn_Priority = 0;
39 data->ehn.ehn_Flags = 0;
40 data->ehn.ehn_Object = obj;
41 data->ehn.ehn_Class = cl;
45 return (IPTR) obj;
48 IPTR Crawling__MUIM_Setup(struct IClass *cl, Object *obj,
49 struct MUIP_Setup *msg)
51 struct Crawling_DATA *data = INST_DATA(cl, obj);
52 IPTR retval;
54 retval = DoSuperMethodA(cl, obj, (Msg) msg);
56 data->ticker = CRAWLING_INITIAL_DELAY;
58 return retval;
61 IPTR Crawling__MUIM_Show(struct IClass *cl, Object *obj,
62 struct MUIP_Show *msg)
64 struct Crawling_DATA *data = INST_DATA(cl, obj);
65 IPTR retval;
67 retval = DoSuperMethodA(cl, obj, (Msg) msg);
69 data->ehn.ehn_Events |= IDCMP_INTUITICKS;
70 DoMethod(_win(obj), MUIM_Window_AddEventHandler, (IPTR) & data->ehn);
72 return retval;
75 IPTR Crawling__MUIM_Hide(struct IClass *cl, Object *obj,
76 struct MUIP_Hide *msg)
78 struct Crawling_DATA *data = INST_DATA(cl, obj);
80 DoMethod(_win(obj), MUIM_Window_RemEventHandler, (IPTR) & data->ehn);
81 data->ehn.ehn_Events &= ~IDCMP_INTUITICKS;
83 return DoSuperMethodA(cl, obj, (Msg) msg);
87 IPTR Crawling__MUIM_HandleEvent(struct IClass *cl, Object *obj,
88 struct MUIP_HandleEvent *msg)
90 if (msg->imsg)
92 if (msg->imsg->Class == IDCMP_INTUITICKS)
94 struct Crawling_DATA *data = INST_DATA(cl, obj);
96 if (data->ticker)
97 data->ticker--;
99 if (data->ticker == 0)
101 IPTR virty = 0, virth = 0;
103 get(obj, MUIA_Virtgroup_Top, &virty);
104 get(obj, MUIA_Virtgroup_Height, &virth);
106 if (virth >= _mheight(obj))
108 virty++;
109 if (virty + _mheight(obj) > virth)
110 virty = 0;
112 set(obj, MUIA_Virtgroup_Top, virty);
118 return 0;
121 #if ZUNE_BUILTIN_CRAWLING
122 BOOPSI_DISPATCHER(IPTR, Crawling_Dispatcher, cl, obj, msg)
124 switch (msg->MethodID)
126 case OM_NEW:
127 return Crawling__OM_NEW(cl, obj, (struct opSet *)msg);
128 case MUIM_Setup:
129 return Crawling__MUIM_Setup(cl, obj, (APTR) msg);
130 case MUIM_Show:
131 return Crawling__MUIM_Show(cl, obj, (APTR) msg);
132 case MUIM_Hide:
133 return Crawling__MUIM_Hide(cl, obj, (APTR) msg);
134 case MUIM_HandleEvent:
135 return Crawling__MUIM_HandleEvent(cl, obj, (APTR) msg);
136 default:
137 return DoSuperMethodA(cl, obj, msg);
140 BOOPSI_DISPATCHER_END
142 const struct __MUIBuiltinClass _MUI_Crawling_desc =
144 MUIC_Crawling,
145 MUIC_Virtgroup,
146 sizeof(struct Crawling_DATA),
147 (void *) Crawling_Dispatcher
149 #endif /* ZUNE_BUILTIN_CRAWLING */