diff options
Diffstat (limited to 'source/blender/windowmanager/intern/wm_dragdrop.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_dragdrop.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c index 319ce99f700..16ed51cbd80 100644 --- a/source/blender/windowmanager/intern/wm_dragdrop.c +++ b/source/blender/windowmanager/intern/wm_dragdrop.c @@ -69,29 +69,29 @@ static ListBase dropboxes = {NULL, NULL}; typedef struct wmDropBoxMap { struct wmDropBoxMap *next, *prev; - + ListBase dropboxes; short spaceid, regionid; char idname[KMAP_MAX_NAME]; - + } wmDropBoxMap; /* spaceid/regionid is zero for window drop maps */ ListBase *WM_dropboxmap_find(const char *idname, int spaceid, int regionid) { wmDropBoxMap *dm; - + for (dm = dropboxes.first; dm; dm = dm->next) if (dm->spaceid == spaceid && dm->regionid == regionid) if (STREQLEN(idname, dm->idname, KMAP_MAX_NAME)) return &dm->dropboxes; - + dm = MEM_callocN(sizeof(struct wmDropBoxMap), "dropmap list"); BLI_strncpy(dm->idname, idname, KMAP_MAX_NAME); dm->spaceid = spaceid; dm->regionid = regionid; BLI_addtail(&dropboxes, dm); - + return &dm->dropboxes; } @@ -101,31 +101,31 @@ wmDropBox *WM_dropbox_add(ListBase *lb, const char *idname, int (*poll)(bContext void (*copy)(wmDrag *, wmDropBox *)) { wmDropBox *drop = MEM_callocN(sizeof(wmDropBox), "wmDropBox"); - + drop->poll = poll; drop->copy = copy; drop->ot = WM_operatortype_find(idname, 0); drop->opcontext = WM_OP_INVOKE_DEFAULT; - + if (drop->ot == NULL) { MEM_freeN(drop); printf("Error: dropbox with unknown operator: %s\n", idname); return NULL; } WM_operator_properties_alloc(&(drop->ptr), &(drop->properties), idname); - + BLI_addtail(lb, drop); - + return drop; } void wm_dropbox_free(void) { wmDropBoxMap *dm; - + for (dm = dropboxes.first; dm; dm = dm->next) { wmDropBox *drop; - + for (drop = dm->dropboxes.first; drop; drop = drop->next) { if (drop->ptr) { WM_operator_properties_free(drop->ptr); @@ -134,7 +134,7 @@ void wm_dropbox_free(void) } BLI_freelistN(&dm->dropboxes); } - + BLI_freelistN(&dropboxes); } @@ -145,10 +145,10 @@ wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, { wmWindowManager *wm = CTX_wm_manager(C); wmDrag *drag = MEM_callocN(sizeof(struct wmDrag), "new drag"); - + /* keep track of future multitouch drag too, add a mousepointer id or so */ /* if multiple drags are added, they're drawn as list */ - + BLI_addtail(&wm->drags, drag); drag->flags = flags; drag->icon = icon; @@ -158,7 +158,7 @@ wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, else drag->poin = poin; drag->value = value; - + return drag; } @@ -211,13 +211,13 @@ static const char *wm_dropbox_active(bContext *C, wmDrag *drag, const wmEvent *e ScrArea *sa = CTX_wm_area(C); ARegion *ar = CTX_wm_region(C); const char *name; - + name = dropbox_active(C, &win->handlers, drag, event); if (name) return name; - + name = dropbox_active(C, &sa->handlers, drag, event); if (name) return name; - + name = dropbox_active(C, &ar->handlers, drag, event); if (name) return name; @@ -234,16 +234,16 @@ static void wm_drop_operator_options(bContext *C, wmDrag *drag, const wmEvent *e /* for multiwin drags, we only do this if mouse inside */ if (event->x < 0 || event->y < 0 || event->x > winsize_x || event->y > winsize_y) return; - + drag->opname[0] = 0; - + /* check buttons (XXX todo rna and value) */ if (UI_but_active_drop_name(C)) { BLI_strncpy(drag->opname, IFACE_("Paste name"), sizeof(drag->opname)); } else { const char *opname = wm_dropbox_active(C, drag, event); - + if (opname) { BLI_strncpy(drag->opname, opname, sizeof(drag->opname)); // WM_cursor_modal_set(win, CURSOR_COPY); @@ -259,7 +259,7 @@ void wm_drags_check_ops(bContext *C, const wmEvent *event) { wmWindowManager *wm = CTX_wm_manager(C); wmDrag *drag; - + for (drag = wm->drags.first; drag; drag = drag->next) { wm_drop_operator_options(C, drag, event); } @@ -312,25 +312,25 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) wmDrag *drag; const int winsize_y = WM_window_pixels_y(win); int cursorx, cursory, x, y; - + cursorx = win->eventstate->x; cursory = win->eventstate->y; if (rect) { rect->xmin = rect->xmax = cursorx; rect->ymin = rect->ymax = cursory; } - + /* XXX todo, multiline drag draws... but maybe not, more types mixed wont work well */ glEnable(GL_BLEND); for (drag = wm->drags.first; drag; drag = drag->next) { int iconsize = UI_DPI_ICON_SIZE; int padding = 4 * UI_DPI_FAC; - + /* image or icon */ if (drag->imb) { x = cursorx - drag->sx / 2; y = cursory - drag->sy / 2; - + if (rect) drag_rect_minmax(rect, x, y, x + drag->sx, y + drag->sy); else { @@ -343,13 +343,13 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) else { x = cursorx - 2 * padding; y = cursory - 2 * UI_DPI_FAC; - + if (rect) drag_rect_minmax(rect, x, y, x + iconsize, y + iconsize); else UI_icon_draw_aspect(x, y, drag->icon, 1.0f / UI_DPI_FAC, 0.8); } - + /* item name */ if (drag->imb) { x = cursorx - drag->sx / 2; @@ -359,7 +359,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) x = cursorx + 10 * UI_DPI_FAC; y = cursory + 1 * UI_DPI_FAC; } - + if (rect) { int w = UI_fontstyle_string_width(fstyle, wm_drag_name(drag)); drag_rect_minmax(rect, x, y, x + w, y + iconsize); @@ -368,7 +368,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) const unsigned char col[] = {255, 255, 255, 255}; UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), col); } - + /* operator name with roundbox */ if (drag->opname[0]) { if (drag->imb) { @@ -389,14 +389,14 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) y = (cursory - iconsize) - padding; } } - + if (rect) { int w = UI_fontstyle_string_width(fstyle, wm_drag_name(drag)); drag_rect_minmax(rect, x, y, x + w, y + iconsize); } - else + else wm_drop_operator_draw(drag->opname, x, y); - + } } glDisable(GL_BLEND); |