Merging NList MCC 0.119 into the main branch.
[AROS.git] / workbench / classes / zune / nlist / nlist_mcc / NList_mcc0.c
blob9718d32e300284bab68178decabbf8f8ff8e4719
1 /***************************************************************************
3 NList.mcc - New List MUI Custom Class
4 Registered MUI class, Serial Number: 1d51 0x9d510030 to 0x9d5100A0
5 0x9d5100C0 to 0x9d5100FF
7 Copyright (C) 1996-2001 by Gilles Masson
8 Copyright (C) 2001-2014 NList Open Source Team
10 This library is free software; you can redistribute it and/or
11 modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
15 This library is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
20 NList classes Support Site: http://www.sf.net/projects/nlist-classes
22 $Id$
24 ***************************************************************************/
26 #include <clib/alib_protos.h>
27 #include <proto/exec.h>
28 #include <proto/graphics.h>
29 #include <proto/utility.h>
30 #include <proto/muimaster.h>
31 #include <proto/intuition.h>
33 #include "private.h"
35 #include "NList_func.h"
37 #ifndef MAKE_ID
38 #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
39 #endif
41 static IPTR mNL_Show(struct IClass *cl,Object *obj,Msg msg)
43 IPTR retval;
44 struct NLData *data = INST_DATA(cl,obj);
46 ENTER();
48 data->rp = _rp(obj);
50 data->SHOW = TRUE;
51 data->moves = FALSE;
53 if (data->NList_Disabled)
54 data->NList_Disabled = 1;
56 if (data->nodraw)
57 return (DoSuperMethodA(cl,obj,msg));
59 if (data->do_draw_all)
60 { data->adjustbar_old = -1;
61 if (data->adjustbar == -3)
62 data->adjustbar = -2;
65 data->refreshing = FALSE;
66 data->badrport = FALSE;
68 data->display_ptr = NULL;
69 data->drag_border = FALSE;
70 data->DisplayArray[1] = (char *) -2;
72 data->ScrollBarsTime = 1;
74 /* GetImages must be done before DoSuperMethodA */
75 GetImages(data);
77 data->do_updatesb = data->do_images = TRUE;
79 retval = DoSuperMethodA(cl,obj,msg);
81 if (data->ScrollBarsPos == -3)
83 if (!(LIBVER(GfxBase) >= 39))
84 NL_CreateImages(data);
85 data->ScrollBarsPos = -2;
88 if (data->VertPropObject)
90 set(data->VertPropObject,MUIA_Prop_DoSmooth, data->NList_Smooth);
93 GetNImage_Sizes(data);
94 data->do_images = TRUE;
96 RETURN(retval);
97 return (retval);
101 static IPTR mNL_Hide(struct IClass *cl,Object *obj,Msg msg)
103 struct NLData *data = INST_DATA(cl,obj);
104 IPTR retval;
106 ENTER();
108 data->badrport = FALSE;
110 // remove any custom pointer
111 HideCustomPointer(data);
113 retval = DoSuperMethodA(cl,obj,msg);
115 data->rp = NULL;
116 data->SHOW = FALSE;
117 data->moves = FALSE;
119 RETURN(retval);
120 return (retval);
126 #if defined(DEBUG)
127 static char *getIDStr(ULONG id)
129 static char idStr[5];
130 char c;
132 c = (id >> 24) & 0xff;
133 idStr[0] = (c >= ' ' && c <= 'z') ? c : '?';
134 c = (id >> 16) & 0xff;
135 idStr[1] = (c >= ' ' && c <= 'z') ? c : '?';
136 c = (id >> 8) & 0xff;
137 idStr[2] = (c >= ' ' && c <= 'z') ? c : '?';
138 c = (id >> 0) & 0xff;
139 idStr[3] = (c >= ' ' && c <= 'z') ? c : '?';
140 idStr[4] = '\0';
142 return idStr;
144 #endif
146 static IPTR mNL_Import(struct IClass *cl,Object *obj,struct MUIP_Import *msg)
148 struct NLData *data = INST_DATA(cl, obj);
149 ULONG id;
151 ENTER();
153 if((id = muiNotifyData(obj)->mnd_ObjectID) != 0)
155 LONG *nlie;
157 D(DBF_STARTUP, "import objID '%s'", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
159 if((nlie = (LONG *)DoMethod(msg->dataspace, MUIM_Dataspace_Find, id)) != NULL &&
160 nlie[0] == MAKE_ID('E','X','P','T'))
162 ULONG nliepos = 1;
163 LONG numcol;
164 LONG numsel;
165 LONG num_widt = 0;
166 LONG num_ordr = 0;
167 LONG num_sels = 0;
169 FULLQUIET;
171 while(id != 0)
173 id = nlie[nliepos++];
175 switch(id)
177 case MAKE_ID('A','C','T','V'):
179 D(DBF_STARTUP, "objID '%s', importing ACTV entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
180 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_Active))
181 NL_List_Active(data, nlie[nliepos], NULL, MUIV_NList_Select_On, TRUE,0);
182 nliepos++;
183 data->do_draw = TRUE;
185 break;
187 case MAKE_ID('F','R','S','T'):
189 D(DBF_STARTUP, "objID '%s', importing FRST entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
190 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_First))
191 NL_List_First(data, nlie[nliepos], NULL);
192 nliepos++;
193 data->do_draw = TRUE;
195 break;
197 case MAKE_ID('T','I','T','L'):
199 D(DBF_STARTUP, "objID '%s', importing TITL entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
200 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_TitleMark))
202 set(obj,MUIA_NList_SortType, nlie[nliepos]);
203 set(obj,MUIA_NList_TitleMark, nlie[nliepos]);
205 nliepos++;
206 data->do_draw_all = TRUE;
207 data->do_draw = TRUE;
209 break;
211 case MAKE_ID('T','I','T','2'):
213 D(DBF_STARTUP, "objID '%s', importing TIT2 entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
214 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_TitleMark))
216 set(obj,MUIA_NList_SortType2, nlie[nliepos]);
217 set(obj,MUIA_NList_TitleMark2, nlie[nliepos]);
219 nliepos++;
220 data->do_draw_all = TRUE;
221 data->do_draw = TRUE;
223 break;
225 case MAKE_ID('W','I','D','T'):
227 D(DBF_STARTUP, "objID '%s', importing WIDT entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
228 num_widt = nlie[nliepos++];
229 for(numcol = 0; numcol < num_widt; numcol++)
231 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_ColWidth))
233 D(DBF_STARTUP, "objID '%s', importing WIDT %ld", getIDStr(muiNotifyData(obj)->mnd_ObjectID), nlie[nliepos]);
234 NL_ColWidth(data, numcol, nlie[nliepos]);
236 nliepos++;
238 data->do_draw_all = TRUE;
239 data->do_draw = TRUE;
241 break;
243 case MAKE_ID('O','R','D','R'):
245 D(DBF_STARTUP, "objID '%s', importing ORDR entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
246 num_ordr = nlie[nliepos++];
247 for(numcol = 0; numcol < num_ordr; numcol++)
249 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_ColOrder))
250 NL_SetCol(data, numcol, nlie[nliepos]);
251 nliepos++;
253 data->do_draw_all = TRUE;
254 data->do_draw = TRUE;
256 break;
258 case MAKE_ID('S','E','L','S'):
260 D(DBF_STARTUP, "objID '%s', importing SELS entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
261 num_sels = nlie[nliepos++];
262 for(numsel = 0; numsel < num_sels; numsel++)
264 if(isFlagSet(data->NList_Imports, MUIV_NList_Imports_Selected))
266 if(nlie[nliepos] >= 0 && nlie[nliepos] < data->NList_Entries)
267 SELECT2_CHGE(nlie[nliepos], TE_Select_Line);
269 nliepos++;
271 data->do_draw_all = TRUE;
272 data->do_draw = TRUE;
274 break;
276 default:
278 // bail out of the loop in case of an unknown ID
279 id = 0;
281 break;
285 FULLQUIET_END;
286 if(data->do_draw == TRUE && _app(obj) != NULL)
287 DoMethod(_app(obj), MUIM_Application_PushMethod, obj, 1, MUIM_NList_Trigger);
291 LEAVE();
292 return 0;
298 static IPTR mNL_Export(struct IClass *cl,Object *obj,struct MUIP_Export *msg)
300 struct NLData *data = INST_DATA(cl,obj);
301 ULONG id;
303 ENTER();
305 if((id = muiNotifyData(obj)->mnd_ObjectID) != 0)
307 LONG *buffer;
308 ULONG nliesize;
309 LONG pos;
310 LONG numsel;
311 LONG numcol;
312 LONG num_widt;
313 LONG num_ordr;
314 LONG num_sels;
315 LONG n_actv;
316 LONG n_frst;
317 LONG n_titr;
318 LONG n_widt;
319 LONG n_ordr;
320 LONG n_sels;
322 D(DBF_STARTUP, "export objID '%s'", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
324 n_actv = isFlagSet(data->NList_Exports, MUIV_NList_Exports_Active) ? 2 : 0;
325 n_frst = isFlagSet(data->NList_Exports, MUIV_NList_Exports_First) ? 2 : 0;
326 n_titr = isFlagSet(data->NList_Exports, MUIV_NList_Exports_TitleMark) ? 4 : 0;
328 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_ColWidth))
330 num_widt = 0;
331 for (numcol = 0; numcol < data->numcols; numcol++)
333 if(data->cols[numcol].col >= num_widt)
334 num_widt = data->cols[numcol].col + 1;
336 n_widt = num_widt + 2;
338 else
340 num_widt = 0;
341 n_widt = 0;
344 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_ColOrder))
346 num_ordr = data->numcols;
347 n_ordr = num_ordr + 2;
349 else
351 num_ordr = 0;
352 n_ordr = 0;
355 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_Selected) && data->NList_TypeSelect == MUIV_NList_TypeSelect_Line)
357 NL_List_Select(data, MUIV_NList_Select_All, MUIV_NList_Select_All, MUIV_NList_Select_Ask, &numsel);
359 num_sels = 0;
360 if(numsel > 0)
361 num_sels = numsel;
362 n_sels = num_sels + 2;
364 else
366 num_sels = 0;
367 n_sels = 0;
370 SHOWVALUE(DBF_STARTUP, n_actv);
371 SHOWVALUE(DBF_STARTUP, n_frst);
372 SHOWVALUE(DBF_STARTUP, n_titr);
373 SHOWVALUE(DBF_STARTUP, n_ordr);
374 SHOWVALUE(DBF_STARTUP, n_sels);
376 nliesize = (n_actv + n_frst + n_titr + n_widt + n_ordr + n_sels + 3) * sizeof(buffer[0]);
378 SHOWVALUE(DBF_STARTUP, nliesize);
380 if((buffer = (LONG *)AllocVecPooled(data->Pool, nliesize)) != NULL)
382 ULONG nliepos = 0;
384 buffer[nliepos++] = MAKE_ID('E','X','P','T');
386 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_Active))
388 D(DBF_STARTUP, "objID '%s', exporting ACTV entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
389 buffer[nliepos++] = MAKE_ID('A','C','T','V');
390 buffer[nliepos++] = data->NList_Active;
392 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_First))
394 D(DBF_STARTUP, "objID '%s', exporting FRST entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
395 buffer[nliepos++] = MAKE_ID('F','R','S','T');
396 buffer[nliepos++] = data->NList_First;
398 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_TitleMark))
400 D(DBF_STARTUP, "objID '%s', exporting TITL entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
401 buffer[nliepos++] = MAKE_ID('T','I','T','L');
402 buffer[nliepos++] = data->NList_TitleMark;
403 D(DBF_STARTUP, "objID '%s', exporting TIT2 entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
404 buffer[nliepos++] = MAKE_ID('T','I','T','2');
405 buffer[nliepos++] = data->NList_TitleMark2;
407 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_ColWidth))
409 D(DBF_STARTUP, "objID '%s', exporting WIDT entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
410 buffer[nliepos++] = MAKE_ID('W','I','D','T');
411 buffer[nliepos++] = num_widt;
412 for(numcol = 0; numcol < num_widt; numcol++)
413 buffer[nliepos++] = (LONG)NL_ColWidth(data, numcol, MUIV_NList_ColWidth_Get);
415 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_ColOrder))
417 D(DBF_STARTUP, "objID '%s', exporting ORDR entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
418 buffer[nliepos++] = MAKE_ID('O','R','D','R');
419 buffer[nliepos++] = num_ordr;
420 for(numcol = 0; numcol < num_ordr; numcol++)
421 buffer[nliepos++] = NL_ColumnToCol(data, numcol);
423 if(isFlagSet(data->NList_Exports, MUIV_NList_Exports_Selected) && data->NList_TypeSelect == MUIV_NList_TypeSelect_Line)
425 struct MUIP_NList_NextSelected nlns;
427 D(DBF_STARTUP, "objID '%s', exporting SELS entry", getIDStr(muiNotifyData(obj)->mnd_ObjectID));
428 buffer[nliepos++] = MAKE_ID('S','E','L','S');
429 buffer[nliepos++] = num_sels;
430 pos = MUIV_NList_NextSelected_Start;
431 numsel = 0;
432 nlns.pos = &pos;
433 while(numsel < num_sels && mNL_List_NextSelected(cl, obj, &nlns) && pos != MUIV_NList_NextSelected_End)
435 buffer[nliepos++] = pos;
436 numsel++;
438 while(numsel < num_sels)
440 buffer[nliepos++] = -1;
441 numsel++;
444 buffer[nliepos++] = MAKE_ID('E','N','D','.');
446 if(nliepos * sizeof(buffer[0]) > nliesize)
447 W(DBF_STARTUP, "object %08lx, possible buffer overrun, %ld > %ld", obj, nliepos * sizeof(buffer[0]), nliesize);
449 DoMethod(msg->dataspace, MUIM_Dataspace_Add, buffer, nliesize, id);
451 FreeVecPooled(data->Pool, buffer);
455 LEAVE();
456 return 0;
459 //$$$Sensei
460 static IPTR mNL_List_Construct( struct IClass *cl, Object *obj, struct MUIP_NList_Construct *msg )
462 APTR entry = msg->entry;
464 if( entry )
466 struct NLData *data = INST_DATA( cl, obj );
467 struct Hook *hook = data->NList_ConstructHook;
469 if( hook )
471 APTR pool = msg->pool;
473 if( data->NList_ConstructHook2 )
474 entry = (APTR) MyCallHookPktA(obj,hook,entry,pool);
475 else
476 entry = (APTR) MyCallHookPkt(obj,TRUE,hook,pool,entry);
480 return( (IPTR) entry );
484 //$$$Sensei
485 static IPTR mNL_List_Destruct( struct IClass *cl, Object *obj, struct MUIP_NList_Destruct *msg )
488 APTR entry = msg->entry;
490 if( entry )
493 struct NLData *data = INST_DATA( cl, obj );
494 struct Hook *hook = data->NList_DestructHook;
496 if( hook )
499 APTR pool = msg->pool;
501 if( data->NList_DestructHook2 )
502 MyCallHookPktA(obj,hook,entry,pool);
503 else
504 MyCallHookPkt(obj,TRUE,hook,pool,entry);
510 return( 0 );
514 //$$$Sensei
515 // Function directly stolen from original NList_Compare().
516 static IPTR mNL_List_Compare( struct IClass *cl, Object *obj, struct MUIP_NList_Compare *msg )
518 struct NLData *data = INST_DATA(cl, obj);
520 if(data->NList_CompareHook != NULL)
522 if(data->NList_CompareHook2)
523 return (IPTR)MyCallHookPktA(obj, data->NList_CompareHook, msg->entry1, msg->entry2, msg->sort_type1, msg->sort_type2);
524 else
525 return (IPTR)MyCallHookPkt(obj, TRUE, data->NList_CompareHook, msg->entry2, msg->entry1);
527 else
528 return (IPTR)Stricmp(msg->entry1, msg->entry2);
531 //$$$Sensei
532 static IPTR mNL_List_Display( struct IClass *cl, Object *obj, UNUSED struct MUIP_NList_Display *msg )
534 struct NLData *data = INST_DATA( cl, obj );
536 if( data->NList_DisplayHook )
538 if( data->NList_DisplayHook2 )
540 // data->DisplayArray[0] = (char *) useptr;
541 return MyCallHookPkt(obj,FALSE,data->NList_DisplayHook,obj,data->DisplayArray);
543 else
545 APTR useptr = data->DisplayArray[ 0 ];
547 data->DisplayArray[0] = (char *) data->NList_PrivateData;
548 return MyCallHookPkt(obj,TRUE,data->NList_DisplayHook,&data->DisplayArray[2],useptr);
552 return( 0 );
555 static IPTR mNL_GoActive(struct IClass *cl, Object *obj, UNUSED struct MUIP_NList_GoActive *msg)
557 struct NLData *data = INST_DATA(cl, obj);
559 ENTER();
561 data->isActiveObject = TRUE;
563 if(data->NList_ActiveObjectOnClick == TRUE)
564 DoMethod(obj, MUIM_NList_Redraw, MUIV_NList_Redraw_Selected);
566 RETURN(TRUE);
567 return TRUE;
570 static IPTR mNL_GoInactive(struct IClass *cl, Object *obj, UNUSED struct MUIP_NList_GoActive *msg)
572 struct NLData *data = INST_DATA(cl, obj);
574 ENTER();
576 data->isActiveObject = FALSE;
577 // inactive list will no longer handle any actions
578 // caused by a pressed mouse button
579 data->moves = FALSE;
581 if(data->NList_ActiveObjectOnClick == TRUE)
582 DoMethod(obj, MUIM_NList_Redraw, MUIV_NList_Redraw_Selected);
584 RETURN(TRUE);
585 return TRUE;
588 #define FS (data = INST_DATA(cl,obj)); (NotNotify = data->DoNotify)
590 DISPATCHER(_Dispatcher)
592 struct NLData *data = NULL;
593 IPTR retval = 0;
594 ULONG NotNotify = ~0;
596 switch(msg->MethodID)
598 case OM_NEW : retval = mNL_New(cl,obj,(APTR)msg); break;
599 case OM_DISPOSE : retval = mNL_Dispose(cl,obj,(APTR)msg); break;
600 case OM_GET : FS; retval = mNL_Get(cl,obj,(APTR)msg); break;
601 case OM_SET : FS; retval = mNL_Set(cl,obj,(APTR)msg); break;
602 case MUIM_Setup : retval = mNL_Setup(cl,obj,(APTR)msg); break;
603 case MUIM_Cleanup : retval = mNL_Cleanup(cl,obj,(APTR)msg); break;
604 case MUIM_AskMinMax : retval = mNL_AskMinMax(cl,obj,(APTR)msg); break;
605 case MUIM_Show : retval = mNL_Show(cl,obj,(APTR)msg); break;
606 case MUIM_Hide : retval = mNL_Hide(cl,obj,(APTR)msg); break;
607 case MUIM_Draw : retval = mNL_Draw(cl,obj,(APTR)msg); break;
608 case MUIM_HandleEvent : retval = mNL_HandleEvent(cl,obj,(APTR)msg); break;
609 case MUIM_Notify : retval = mNL_Notify(cl,obj,(APTR)msg); break;
610 case MUIM_DragQuery : retval = mNL_DragQuery(cl,obj,(APTR)msg); break;
611 case MUIM_DragBegin : retval = mNL_DragBegin(cl,obj,(APTR)msg); break;
612 case MUIM_DragReport : retval = mNL_DragReport(cl,obj,(APTR)msg); break;
613 case MUIM_DragFinish : retval = mNL_DragFinish(cl,obj,(APTR)msg); break;
614 case MUIM_DragDrop : retval = mNL_DragDrop(cl,obj,(APTR)msg); break;
615 case MUIM_CreateDragImage : retval = mNL_CreateDragImage(cl,obj,(APTR)msg); break;
616 case MUIM_DeleteDragImage : retval = mNL_DeleteDragImage(cl,obj,(APTR)msg); break;
617 case MUIM_ContextMenuBuild : retval = mNL_ContextMenuBuild(cl,obj,(APTR)msg); break;
618 case MUIM_ContextMenuChoice : retval = mNL_ContextMenuChoice(cl,obj,(APTR)msg); break;
619 case MUIM_Import : retval = mNL_Import(cl,obj,(APTR)msg); break;
620 case MUIM_Export : retval = mNL_Export(cl,obj,(APTR)msg); break;
622 case MUIM_NList_ContextMenuBuild : retval = 0; break;
623 case MUIM_NList_Trigger : retval = mNL_Trigger(cl,obj,(APTR)msg); break;
624 case MUIM_List_Sort :
625 case MUIM_NList_Sort : FS; retval = mNL_List_Sort(cl,obj,(APTR)msg); break;
626 case MUIM_NList_Sort2 : FS; retval = mNL_List_Sort2(cl,obj,(APTR)msg); break;
627 case MUIM_NList_Sort3 : FS; retval = mNL_List_Sort3(cl,obj,(APTR)msg); break;
628 case MUIM_List_Insert :
629 case MUIM_NList_Insert : FS; retval = mNL_List_Insert(cl,obj,(APTR)msg); break;
630 case MUIM_List_InsertSingle :
631 case MUIM_NList_InsertSingle : FS; retval = mNL_List_InsertSingle(cl,obj,(APTR)msg); break;
632 case MUIM_List_GetEntry :
633 case MUIM_NList_GetEntry : FS; retval = mNL_List_GetEntry(cl,obj,(APTR)msg); break;
634 case MUIM_List_Clear :
635 case MUIM_NList_Clear : FS; retval = mNL_List_Clear(cl,obj,(APTR)msg); break;
636 case MUIM_List_Jump :
637 case MUIM_NList_Jump : FS; retval = mNL_List_Jump(cl,obj,(APTR)msg); break;
638 case MUIM_List_Select :
639 case MUIM_NList_Select : FS; retval = mNL_List_Select(cl,obj,(APTR)msg); break;
640 case MUIM_NList_SelectChange : retval = 0; break;
641 case MUIM_List_TestPos : FS; retval = mNL_List_TestPosOld(cl,obj,(APTR)msg); break;
642 case MUIM_NList_TestPos : FS; retval = mNL_List_TestPos(cl,obj,(APTR)msg); break;
643 case MUIM_List_Redraw :
644 case MUIM_NList_Redraw : FS; retval = mNL_List_Redraw(cl,obj,(APTR)msg); break;
645 case MUIM_List_Exchange :
646 case MUIM_NList_Exchange : FS; retval = mNL_List_Exchange(cl,obj,(APTR)msg); break;
647 case MUIM_List_Move :
648 case MUIM_NList_Move : FS; retval = mNL_List_Move(cl,obj,(APTR)msg); break;
649 case MUIM_List_NextSelected :
650 case MUIM_NList_NextSelected : FS; retval = mNL_List_NextSelected(cl,obj,(APTR)msg); break;
651 case MUIM_NList_PrevSelected : FS; retval = mNL_List_PrevSelected(cl,obj,(APTR)msg); break;
652 case MUIM_List_Remove :
653 case MUIM_NList_Remove : FS; retval = mNL_List_Remove(cl,obj,(APTR)msg); break;
654 case MUIM_List_CreateImage :
655 case MUIM_NList_CreateImage : FS; retval = mNL_CreateImage(cl,obj,(APTR)msg); break;
656 case MUIM_List_DeleteImage :
657 case MUIM_NList_DeleteImage : FS; retval = mNL_DeleteImage(cl,obj,(APTR)msg); break;
658 case MUIM_NList_CopyToClip : FS; retval = mNL_CopyToClip(cl,obj,(APTR)msg); break;
659 case MUIM_NList_UseImage : FS; retval = mNL_UseImage(cl,obj,(APTR)msg); break;
660 case MUIM_NList_ReplaceSingle : FS; retval = mNL_List_ReplaceSingle(cl,obj,(APTR)msg); break;
661 case MUIM_NList_InsertWrap : FS; retval = mNL_List_InsertWrap(cl,obj,(APTR)msg); break;
662 case MUIM_NList_InsertSingleWrap : FS; retval = mNL_List_InsertSingleWrap(cl,obj,(APTR)msg); break;
663 case MUIM_NList_GetEntryInfo : FS; retval = mNL_List_GetEntryInfo(cl,obj,(APTR)msg); break;
664 case MUIM_NList_GetSelectInfo : FS; retval = mNL_List_GetSelectInfo(cl,obj,(APTR)msg); break;
665 case MUIM_NList_CopyTo : FS; retval = mNL_CopyTo(cl,obj,(APTR)msg); break;
666 case MUIM_NList_DropType : FS; retval = mNL_DropType(cl,obj,(APTR)msg); break;
667 case MUIM_NList_DropDraw : FS; retval = mNL_DropDraw(cl,obj,(APTR)msg); break;
668 case MUIM_NList_DropEntryDrawErase : FS; retval = mNL_DropEntryDrawErase(cl,obj,(APTR)msg); break;
669 case MUIM_NList_RedrawEntry : FS; retval = mNL_List_RedrawEntry(cl,obj,(APTR)msg); break;
670 case MUIM_NList_DoMethod : FS; retval = mNL_List_DoMethod(cl,obj,(APTR)msg); break;
671 case MUIM_NList_ColWidth : FS; retval = mNL_List_ColWidth(cl,obj,(APTR)msg); break;
672 case MUIM_NList_ColToColumn : FS; retval = mNL_ColToColumn(cl,obj,(APTR)msg); break;
673 case MUIM_NList_ColumnToCol : FS; retval = mNL_ColumnToCol(cl,obj,(APTR)msg); break;
674 case MUIM_NList_SetColumnCol : FS; retval = mNL_SetColumnCol(cl,obj,(APTR)msg); break;
675 case MUIM_NList_GetPos : retval = mNL_List_GetPos(cl,obj,(APTR)msg); break;
676 case MUIM_NList_QueryBeginning : retval = 0; break;
677 case MUIM_NList_Construct : retval = mNL_List_Construct(cl,obj,(APTR)msg); break;
678 case MUIM_NList_Destruct : retval = mNL_List_Destruct(cl,obj,(APTR)msg); break;
679 case MUIM_NList_Compare : retval = mNL_List_Compare(cl,obj,(APTR)msg); break;
680 case MUIM_NList_Display : retval = mNL_List_Display(cl,obj,(APTR)msg); break;
682 case MUIM_GoActive : mNL_GoActive(cl,obj,(APTR)msg); return(DoSuperMethodA(cl,obj,msg));
683 case MUIM_GoInactive : mNL_GoInactive(cl,obj,(APTR)msg); return(DoSuperMethodA(cl,obj,msg));
684 case MUIM_NList_GoActive : retval = mNL_GoActive(cl,obj,(APTR)msg); break;
685 case MUIM_NList_GoInactive : retval = mNL_GoInactive(cl,obj,(APTR)msg); break;
686 case MUIM_NList_SetActive : FS; retval = mNL_List_SetActive(cl,obj,(APTR)msg); break;
688 default:
689 return(DoSuperMethodA(cl,obj,msg));
690 break;
693 if(~NotNotify && data)
695 ULONG DoNotify = ~NotNotify & data->DoNotify & data->Notify;
696 if(data->SETUP && DoNotify)
697 do_notifies(DoNotify);
700 return retval;