bool ED_region_overlap_isect_x(const ARegion *ar, const int event_x) { BLI_assert(ar->overlap); /* No contents, skip it. */ if (ar->v2d.mask.xmin == ar->v2d.mask.xmax) { return false; } return BLI_rctf_isect_x(&ar->v2d.tot, UI_view2d_region_to_view_x(&ar->v2d, event_x - ar->winrct.xmin)); }
static int ed_marker_border_select_exec(bContext *C, wmOperator *op) { View2D *v2d = UI_view2d_fromcontext(C); ListBase *markers = ED_context_get_markers(C); TimeMarker *marker; int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); bool extend = RNA_boolean_get(op->ptr, "extend"); rctf rect; WM_operator_properties_border_to_rctf(op, &rect); UI_view2d_region_to_view_rctf(v2d, &rect, &rect); if (markers == NULL) return 0; /* XXX marker context */ for (marker = markers->first; marker; marker = marker->next) { if (BLI_rctf_isect_x(&rect, marker->frame)) { switch (gesture_mode) { case GESTURE_MODAL_SELECT: marker->flag |= SELECT; break; case GESTURE_MODAL_DESELECT: marker->flag &= ~SELECT; break; } } else if (!extend) { marker->flag &= ~SELECT; } } WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); return 1; }