All pastes #714013 Raw Edit

Stuff

public text v1 · immutable
#714013 ·published 2007-09-25 21:27 UTC
rendered paste body
void copy_dropentries()
{
        IPTR destination_path;
	struct IconList_Drop *drop = FindTask(NULL)->tc_UserData;

        if (drop)
        {
            /* get path of DESTINATION iconlist*/
            destination_path = drop->destination_string;

            if ( !destination_path ) return;
                
            /* get SOURCE entries */

            struct MUIDisplayObjects dobjects;
            struct Hook displayCopyHook;
            struct Hook displayDelHook;

            displayCopyHook.h_Entry = (HOOKFUNC) Wanderer__HookFunc_DisplayCopyFunc;
            displayDelHook.h_Entry = (HOOKFUNC) Wanderer__HookFunc_AskDeleteFunc;
            

            if (CreateCopyDisplay(ACTION_COPY, &dobjects))
            {
                struct IconList_Entry *ent = (void*)MUIV_IconList_NextSelected_Start;
    
                /* process all selected entries */
                do
                {
                    DoMethod(drop->source_iconlistobj, MUIM_IconList_NextSelected, (IPTR) &ent);

                    /* if not end of selection, process */
                    if ( (int)ent != MUIV_IconList_NextSelected_End )
                    {
D(bug("[WANDERER] drop entry: %s dropped in %s\n", ent->filename, destination_path));

                        /* copy via filesystems.c */
D(bug("[WANDERER] CopyContent \"%s\" to \"%s\"\n", ent->filename, destination_path ));
                     	CopyContent(NULL, ent->filename, destination_path, TRUE, ACTION_COPY, &displayCopyHook, &displayDelHook, (APTR) &dobjects);
                    }
                } 
                while ( (int)ent != MUIV_IconList_NextSelected_End );
               // DisposeCopyDisplay(&dobjects);
            }
            /* update list contents */
            DoMethod(drop->destination_iconlistobj,MUIM_IconList_Update);
        }

	return;
}



. .. . 



    else if (msg->type == ICONWINDOW_ACTION_ICONDROP)
    {
	struct Process *child;

	child = CreateNewProcTags(
		NP_Entry,	copy_dropentries,
		NP_UserData,	(IPTR)msg->drop ,
		NP_Name,	(ULONG)"wanderer copy",
		NP_StackSize,	40000,			
		TAG_DONE);


    }