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
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>
35 #include "NList_func.h"
38 #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
41 static IPTR
mNL_Show(struct IClass
*cl
,Object
*obj
,Msg msg
)
44 struct NLData
*data
= INST_DATA(cl
,obj
);
53 if (data
->NList_Disabled
)
54 data
->NList_Disabled
= 1;
57 return (DoSuperMethodA(cl
,obj
,msg
));
59 if (data
->do_draw_all
)
60 { data
->adjustbar_old
= -1;
61 if (data
->adjustbar
== -3)
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 */
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
;
101 static IPTR
mNL_Hide(struct IClass
*cl
,Object
*obj
,Msg msg
)
103 struct NLData
*data
= INST_DATA(cl
,obj
);
108 data
->badrport
= FALSE
;
110 // remove any custom pointer
111 HideCustomPointer(data
);
113 retval
= DoSuperMethodA(cl
,obj
,msg
);
127 static char *getIDStr(ULONG id
)
129 static char idStr
[5];
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
: '?';
146 static IPTR
mNL_Import(struct IClass
*cl
,Object
*obj
,struct MUIP_Import
*msg
)
148 struct NLData
*data
= INST_DATA(cl
, obj
);
153 if((id
= muiNotifyData(obj
)->mnd_ObjectID
) != 0)
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'))
173 id
= nlie
[nliepos
++];
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);
183 data
->do_draw
= TRUE
;
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
);
193 data
->do_draw
= TRUE
;
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
]);
206 data
->do_draw_all
= TRUE
;
207 data
->do_draw
= TRUE
;
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
]);
220 data
->do_draw_all
= TRUE
;
221 data
->do_draw
= TRUE
;
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
]);
238 data
->do_draw_all
= TRUE
;
239 data
->do_draw
= TRUE
;
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
]);
253 data
->do_draw_all
= TRUE
;
254 data
->do_draw
= TRUE
;
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
);
271 data
->do_draw_all
= TRUE
;
272 data
->do_draw
= TRUE
;
278 // bail out of the loop in case of an unknown ID
286 if(data
->do_draw
== TRUE
&& _app(obj
) != NULL
)
287 DoMethod(_app(obj
), MUIM_Application_PushMethod
, obj
, 1, MUIM_NList_Trigger
);
298 static IPTR
mNL_Export(struct IClass
*cl
,Object
*obj
,struct MUIP_Export
*msg
)
300 struct NLData
*data
= INST_DATA(cl
,obj
);
305 if((id
= muiNotifyData(obj
)->mnd_ObjectID
) != 0)
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
))
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;
344 if(isFlagSet(data
->NList_Exports
, MUIV_NList_Exports_ColOrder
))
346 num_ordr
= data
->numcols
;
347 n_ordr
= num_ordr
+ 2;
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
);
362 n_sels
= num_sels
+ 2;
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
)
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
;
433 while(numsel
< num_sels
&& mNL_List_NextSelected(cl
, obj
, &nlns
) && pos
!= MUIV_NList_NextSelected_End
)
435 buffer
[nliepos
++] = pos
;
438 while(numsel
< num_sels
)
440 buffer
[nliepos
++] = -1;
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
);
460 static IPTR
mNL_List_Construct( struct IClass
*cl
, Object
*obj
, struct MUIP_NList_Construct
*msg
)
462 APTR entry
= msg
->entry
;
466 struct NLData
*data
= INST_DATA( cl
, obj
);
467 struct Hook
*hook
= data
->NList_ConstructHook
;
471 APTR pool
= msg
->pool
;
473 if( data
->NList_ConstructHook2
)
474 entry
= (APTR
) MyCallHookPktA(obj
,hook
,entry
,pool
);
476 entry
= (APTR
) MyCallHookPkt(obj
,TRUE
,hook
,pool
,entry
);
480 return( (IPTR
) entry
);
485 static IPTR
mNL_List_Destruct( struct IClass
*cl
, Object
*obj
, struct MUIP_NList_Destruct
*msg
)
488 APTR entry
= msg
->entry
;
493 struct NLData
*data
= INST_DATA( cl
, obj
);
494 struct Hook
*hook
= data
->NList_DestructHook
;
499 APTR pool
= msg
->pool
;
501 if( data
->NList_DestructHook2
)
502 MyCallHookPktA(obj
,hook
,entry
,pool
);
504 MyCallHookPkt(obj
,TRUE
,hook
,pool
,entry
);
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
);
525 return (IPTR
)MyCallHookPkt(obj
, TRUE
, data
->NList_CompareHook
, msg
->entry2
, msg
->entry1
);
528 return (IPTR
)Stricmp(msg
->entry1
, msg
->entry2
);
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
);
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
);
555 static IPTR
mNL_GoActive(struct IClass
*cl
, Object
*obj
, UNUSED
struct MUIP_NList_GoActive
*msg
)
557 struct NLData
*data
= INST_DATA(cl
, obj
);
561 data
->isActiveObject
= TRUE
;
563 if(data
->NList_ActiveObjectOnClick
== TRUE
)
564 DoMethod(obj
, MUIM_NList_Redraw
, MUIV_NList_Redraw_Selected
);
570 static IPTR
mNL_GoInactive(struct IClass
*cl
, Object
*obj
, UNUSED
struct MUIP_NList_GoActive
*msg
)
572 struct NLData
*data
= INST_DATA(cl
, obj
);
576 data
->isActiveObject
= FALSE
;
577 // inactive list will no longer handle any actions
578 // caused by a pressed mouse button
581 if(data
->NList_ActiveObjectOnClick
== TRUE
)
582 DoMethod(obj
, MUIM_NList_Redraw
, MUIV_NList_Redraw_Selected
);
588 #define FS (data = INST_DATA(cl,obj)); (NotNotify = data->DoNotify)
590 DISPATCHER(_Dispatcher
)
592 struct NLData
*data
= NULL
;
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;
689 return(DoSuperMethodA(cl
,obj
,msg
));
693 if(~NotNotify
&& data
)
695 ULONG DoNotify
= ~NotNotify
& data
->DoNotify
& data
->Notify
;
696 if(data
->SETUP
&& DoNotify
)
697 do_notifies(DoNotify
);