Changeset View
Changeset View
Standalone View
Standalone View
source/blender/windowmanager/intern/wm_dragdrop.c
| Show First 20 Lines • Show All 219 Lines • ▼ Show 20 Lines | static const char *dropbox_active(bContext *C, | ||||
| const wmEvent *event) | const wmEvent *event) | ||||
| { | { | ||||
| LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) { | LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) { | ||||
| if (handler_base->type == WM_HANDLER_TYPE_DROPBOX) { | if (handler_base->type == WM_HANDLER_TYPE_DROPBOX) { | ||||
| wmEventHandler_Dropbox *handler = (wmEventHandler_Dropbox *)handler_base; | wmEventHandler_Dropbox *handler = (wmEventHandler_Dropbox *)handler_base; | ||||
| if (handler->dropboxes) { | if (handler->dropboxes) { | ||||
| LISTBASE_FOREACH (wmDropBox *, drop, handler->dropboxes) { | LISTBASE_FOREACH (wmDropBox *, drop, handler->dropboxes) { | ||||
| const char *tooltip = NULL; | const char *tooltip = NULL; | ||||
| if (drop->poll(C, drag, event, &tooltip)) { | if (drop->poll(C, drag, event, &tooltip) && | ||||
| WM_operator_poll_context(C, drop->ot, drop->opcontext)) { | |||||
| /* XXX Doing translation here might not be ideal, but later we have no more | /* XXX Doing translation here might not be ideal, but later we have no more | ||||
| * access to ot (and hence op context)... */ | * access to ot (and hence op context)... */ | ||||
| return (tooltip) ? tooltip : WM_operatortype_name(drop->ot, drop->ptr); | return (tooltip) ? tooltip : WM_operatortype_name(drop->ot, drop->ptr); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | ID *WM_drag_get_local_ID_from_event(const wmEvent *event, short idcode) | ||||
| if (event->custom != EVT_DATA_DRAGDROP) { | if (event->custom != EVT_DATA_DRAGDROP) { | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| ListBase *lb = event->customdata; | ListBase *lb = event->customdata; | ||||
| return WM_drag_get_local_ID(lb->first, idcode); | return WM_drag_get_local_ID(lb->first, idcode); | ||||
| } | } | ||||
| /** | |||||
| * Check if the drag data is either a local ID or an external ID asset of type \a idcode. | |||||
| */ | |||||
| bool WM_drag_is_ID_type(const wmDrag *drag, int idcode) | |||||
| { | |||||
| return WM_drag_get_local_ID(drag, idcode) || WM_drag_get_asset_data(drag, idcode); | |||||
| } | |||||
| wmDragAsset *WM_drag_get_asset_data(const wmDrag *drag, int idcode) | wmDragAsset *WM_drag_get_asset_data(const wmDrag *drag, int idcode) | ||||
| { | { | ||||
| if (drag->type != WM_DRAG_ASSET) { | if (drag->type != WM_DRAG_ASSET) { | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| wmDragAsset *asset_drag = drag->poin; | wmDragAsset *asset_drag = drag->poin; | ||||
| return (idcode == 0 || asset_drag->id_type == idcode) ? asset_drag : NULL; | return (idcode == 0 || asset_drag->id_type == idcode) ? asset_drag : NULL; | ||||
| ▲ Show 20 Lines • Show All 198 Lines • Show Last 20 Lines | |||||