SDL Wiki

SDL_DropEvent

A structure that contains an event used to request a file open by the system.

Data Fields

Uint32

type

the event type; SDL_DROPFILE, SDL_DROPTEXT, SDL_DROPBEGIN, or SDL_DROPCOMPLETE

Uint32

timestamp

timestamp of the event

char*

file

the file name, which should be freed with SDL_free(), is NULL on BEGIN/COMPLETE

Uint32

windowID

the window that was dropped on, if any

Code Examples

// Example program:
// SDL_DropEvent usage

#include "SDL.h"

int main(int argc, char *argv[]) {
    SDL_bool done;
    SDL_Window *window;
    SDL_Event event;                        // Declare event handle
    char* dropped_filedir;                  // Pointer for directory of dropped file

    SDL_Init(SDL_INIT_VIDEO);               // SDL2 initialization

    window = SDL_CreateWindow(  // Create a window
        "SDL_DropEvent usage, please drop the file on window",
        SDL_WINDOWPOS_CENTERED,
        SDL_WINDOWPOS_CENTERED,
        640,
        480,
        SDL_WINDOW_OPENGL
    );

    // Check that the window was successfully made
    if (window == NULL) {
        // In the event that the window could not be made...
        SDL_Log("Could not create window: %s", SDL_GetError());
        SDL_Quit();
        return 1;
    }

    SDL_EventState(SDL_DROPFILE, SDL_ENABLE);

    done = SDL_FALSE;
    while (!done) {                         // Program loop
        while (!done && SDL_PollEvent(&event)) {
            switch (event.type) {
                case (SDL_QUIT): {          // In case of exit
                    done = SDL_TRUE;
                    break;
                }

                case (SDL_DROPFILE): {      // In case if dropped file
                    dropped_filedir = event.drop.file;
                    // Shows directory of dropped file
                    SDL_ShowSimpleMessageBox(
                        SDL_MESSAGEBOX_INFORMATION,
                        "File dropped on window",
                        dropped_filedir,
                        window
                    );
                    SDL_free(dropped_filedir);    // Free dropped_filedir memory
                    break;
               }
            }
        }
        SDL_Delay(0);
    }

    SDL_DestroyWindow(window);        // Close and destroy the window

    SDL_Quit();                       // Clean up
    return 0;
}

Remarks

SDL_DropEvent is a member of the SDL_Event union and is used when an event of type SDL_DROPFILE, SDL_DROPTEXT, SDL_DROPBEGIN, or SDL_DROPCOMPLETE is reported. You would access it through the event's drop field.

These events are enabled by default. You can disable it with SDL_EventState().

If these events are enabled you must free the filename in the events using SDL_free().

SDL_DROPTEXT, SDL_DROPBEGIN, and SDL_DROPCOMPLETE are available since SDL 2.0.5.

Mac OS X

To enable drag&drop on your SDL app, you must also edit your info.plist file. Add/Modify Document Types. For example, to enable all document types, add the "public.data" mime type as a document type.

Any document or URL types registered via CFBundleDocumentTypes or CFBundleURLTypes are reported as SDL_DROPFILE events.

Version

This structure is available since SDL 2.0.0.

SDL_EventType
SDL_Event
SDL_EventState

CategoryStruct, CategoryEvents


[ edit | delete | history | feedback | raw ]

[ front page | index | search | recent changes | git repo | offline html ]

All wiki content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
Wiki powered by ghwikipp.