WM: remove hard-coded circle radius memory
Replace with operator type 'last_properties'. Also use generic function for circle gesture properties.
This commit is contained in:
parent
137586a13c
commit
8bda35d2f4
|
@ -830,10 +830,7 @@ void GPENCIL_OT_select_circle(wmOperatorType *ot)
|
|||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
/* ********************************************** */
|
||||
|
|
|
@ -681,10 +681,7 @@ void MASK_OT_select_circle(wmOperatorType *ot)
|
|||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
static int mask_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
|
|
|
@ -629,11 +629,9 @@ void ACTION_OT_select_circle(wmOperatorType *ot)
|
|||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_UNDO;
|
||||
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX);
|
||||
|
||||
/* properties */
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
/* ******************** Column Select Operator **************************** */
|
||||
|
|
|
@ -782,10 +782,7 @@ void CLIP_OT_select_circle(wmOperatorType *ot)
|
|||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
/********************** select all operator *********************/
|
||||
|
|
|
@ -555,11 +555,9 @@ void GRAPH_OT_select_circle(wmOperatorType *ot)
|
|||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_UNDO;
|
||||
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX);
|
||||
|
||||
/* properties */
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
/* ******************** Column Select Operator **************************** */
|
||||
|
|
|
@ -647,11 +647,8 @@ void NODE_OT_select_circle(wmOperatorType *ot)
|
|||
/* flags */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
/* rna */
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
/* properties */
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
/* ****** Lasso Select ****** */
|
||||
|
|
|
@ -2896,9 +2896,7 @@ void VIEW3D_OT_select_circle(wmOperatorType *ot)
|
|||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_UNDO;
|
||||
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX);
|
||||
|
||||
/* properties */
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
|
|
@ -3088,12 +3088,9 @@ static void UV_OT_circle_select(wmOperatorType *ot)
|
|||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
|
||||
/* properties */
|
||||
RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_int(ot->srna, "radius", 1, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -309,8 +309,9 @@ void WM_operator_properties_border(struct wmOperatorType *ot);
|
|||
void WM_operator_properties_border_to_rcti(struct wmOperator *op, struct rcti *rect);
|
||||
void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect);
|
||||
void WM_operator_properties_gesture_border(struct wmOperatorType *ot, bool extend);
|
||||
void WM_operator_properties_mouse_select(struct wmOperatorType *ot);
|
||||
void WM_operator_properties_gesture_straightline(struct wmOperatorType *ot, int cursor);
|
||||
void WM_operator_properties_gesture_circle(struct wmOperatorType *ot);
|
||||
void WM_operator_properties_mouse_select(struct wmOperatorType *ot);
|
||||
void WM_operator_properties_select_all(struct wmOperatorType *ot);
|
||||
void WM_operator_properties_select_action(struct wmOperatorType *ot, int default_action);
|
||||
void WM_operator_properties_select_action_simple(struct wmOperatorType *ot, int default_action);
|
||||
|
|
|
@ -84,11 +84,7 @@ wmGesture *WM_gesture_new(bContext *C, const wmEvent *event, int type)
|
|||
rect->xmin = event->x - sx;
|
||||
rect->ymin = event->y - sy;
|
||||
if (type == WM_GESTURE_CIRCLE) {
|
||||
#ifdef GESTURE_MEMORY
|
||||
rect->xmax = circle_select_size;
|
||||
#else
|
||||
rect->xmax = 25; // XXX temp
|
||||
#endif
|
||||
/* caller is responsible for initializing 'xmax' to radius. */
|
||||
}
|
||||
else {
|
||||
rect->xmax = event->x - sx;
|
||||
|
|
|
@ -224,6 +224,9 @@ void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect)
|
|||
BLI_rctf_rcti_copy(rect, &rect_i);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use with #WM_border_select_invoke
|
||||
*/
|
||||
void WM_operator_properties_gesture_border(wmOperatorType *ot, bool extend)
|
||||
{
|
||||
RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
|
@ -235,19 +238,9 @@ void WM_operator_properties_gesture_border(wmOperatorType *ot, bool extend)
|
|||
}
|
||||
}
|
||||
|
||||
void WM_operator_properties_mouse_select(wmOperatorType *ot)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop = RNA_def_boolean(ot->srna, "extend", false, "Extend",
|
||||
"Extend selection instead of deselecting everything first");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
prop = RNA_def_boolean(ot->srna, "deselect", false, "Deselect", "Remove from selection");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
prop = RNA_def_boolean(ot->srna, "toggle", false, "Toggle Selection", "Toggle the selection");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use with #WM_gesture_straightline_invoke
|
||||
*/
|
||||
void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
@ -268,6 +261,36 @@ void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use with #WM_gesture_circle_invoke
|
||||
*/
|
||||
void WM_operator_properties_gesture_circle(wmOperatorType *ot)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
const int radius_default = 25;
|
||||
|
||||
prop = RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX);
|
||||
RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
|
||||
prop = RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX);
|
||||
RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
|
||||
RNA_def_int(ot->srna, "radius", radius_default, 1, INT_MAX, "Radius", "", 1, INT_MAX);
|
||||
prop = RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX);
|
||||
RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
|
||||
}
|
||||
|
||||
void WM_operator_properties_mouse_select(wmOperatorType *ot)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop = RNA_def_boolean(ot->srna, "extend", false, "Extend",
|
||||
"Extend selection instead of deselecting everything first");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
prop = RNA_def_boolean(ot->srna, "deselect", false, "Deselect", "Remove from selection");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
prop = RNA_def_boolean(ot->srna, "toggle", false, "Toggle Selection", "Toggle the selection");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
}
|
||||
|
||||
/**
|
||||
* \param nth_can_disable: Enable if we want to be able to select no interval at all.
|
||||
*/
|
||||
|
|
|
@ -2394,14 +2394,15 @@ void WM_border_select_cancel(bContext *C, wmOperator *op)
|
|||
/* **************** circle gesture *************** */
|
||||
/* works now only for selection or modal paint stuff, calls exec while hold mouse, exit on release */
|
||||
|
||||
#ifdef GESTURE_MEMORY
|
||||
int circle_select_size = 25; /* XXX - need some operator memory thing! */
|
||||
#endif
|
||||
|
||||
int WM_gesture_circle_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
{
|
||||
op->customdata = WM_gesture_new(C, event, WM_GESTURE_CIRCLE);
|
||||
wmGesture *gesture = op->customdata;
|
||||
rcti *rect = gesture->customdata;
|
||||
|
||||
/* Default or previously stored value. */
|
||||
rect->xmax = RNA_int_get(op->ptr, "radius");
|
||||
|
||||
/* add modal handler */
|
||||
WM_event_add_modal_handler(C, op);
|
||||
|
||||
|
@ -2428,9 +2429,6 @@ static void gesture_circle_apply(bContext *C, wmOperator *op)
|
|||
retval = op->type->exec(C, op);
|
||||
OPERATOR_RETVAL_CHECK(retval);
|
||||
}
|
||||
#ifdef GESTURE_MEMORY
|
||||
circle_select_size = rect->xmax;
|
||||
#endif
|
||||
}
|
||||
|
||||
int WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
|
@ -2452,6 +2450,7 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
}
|
||||
}
|
||||
else if (event->type == EVT_MODAL_MAP) {
|
||||
bool is_circle_size = false;
|
||||
float fac;
|
||||
|
||||
switch (event->val) {
|
||||
|
@ -2462,22 +2461,25 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
else
|
||||
rect->xmax += floor(fac);
|
||||
if (rect->xmax < 1) rect->xmax = 1;
|
||||
wm_gesture_tag_redraw(C);
|
||||
is_circle_size = true;
|
||||
break;
|
||||
case GESTURE_MODAL_CIRCLE_ADD:
|
||||
rect->xmax += 2 + rect->xmax / 10;
|
||||
wm_gesture_tag_redraw(C);
|
||||
is_circle_size = true;
|
||||
break;
|
||||
case GESTURE_MODAL_CIRCLE_SUB:
|
||||
rect->xmax -= 2 + rect->xmax / 10;
|
||||
if (rect->xmax < 1) rect->xmax = 1;
|
||||
wm_gesture_tag_redraw(C);
|
||||
is_circle_size = true;
|
||||
break;
|
||||
case GESTURE_MODAL_SELECT:
|
||||
case GESTURE_MODAL_DESELECT:
|
||||
case GESTURE_MODAL_NOP:
|
||||
if (RNA_struct_find_property(op->ptr, "gesture_mode"))
|
||||
RNA_int_set(op->ptr, "gesture_mode", event->val);
|
||||
{
|
||||
PropertyRNA *prop = RNA_struct_find_property(op->ptr, "gesture_mode");
|
||||
if (prop != NULL) {
|
||||
RNA_property_int_set(op->ptr, prop, event->val);
|
||||
}
|
||||
|
||||
if (event->val != GESTURE_MODAL_NOP) {
|
||||
/* apply first click */
|
||||
|
@ -2486,12 +2488,22 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
wm_gesture_tag_redraw(C);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
case GESTURE_MODAL_CANCEL:
|
||||
case GESTURE_MODAL_CONFIRM:
|
||||
/* Normally we wouldn't store last-properties on cancel,
|
||||
* this is an exception since the circle tool is modal. */
|
||||
WM_operator_last_properties_store(op);
|
||||
wm_gesture_end(C, op);
|
||||
return OPERATOR_FINISHED; /* use finish or we don't get an undo */
|
||||
}
|
||||
|
||||
if (is_circle_size) {
|
||||
wm_gesture_tag_redraw(C);
|
||||
|
||||
/* So next use remembers last seen size, even if we didn't apply it. */
|
||||
RNA_int_set(op->ptr, "radius", rect->xmax);
|
||||
}
|
||||
}
|
||||
#ifdef WITH_INPUT_NDOF
|
||||
else if (event->type == NDOF_MOTION) {
|
||||
|
@ -2522,12 +2534,10 @@ void WM_OT_circle_gesture(wmOperatorType *ot)
|
|||
|
||||
ot->invoke = WM_gesture_circle_invoke;
|
||||
ot->modal = WM_gesture_circle_modal;
|
||||
|
||||
ot->poll = WM_operator_winactive;
|
||||
|
||||
RNA_def_property(ot->srna, "x", PROP_INT, PROP_NONE);
|
||||
RNA_def_property(ot->srna, "y", PROP_INT, PROP_NONE);
|
||||
RNA_def_property(ot->srna, "radius", PROP_INT, PROP_NONE);
|
||||
|
||||
/* properties */
|
||||
WM_operator_properties_gesture_circle(ot);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -88,12 +88,4 @@ void wm_stereo3d_set_cancel(bContext *C, wmOperator *op);
|
|||
void wm_open_init_load_ui(wmOperator *op, bool use_prefs);
|
||||
void wm_open_init_use_scripts(wmOperator *op, bool use_prefs);
|
||||
|
||||
/* hack to store circle select size - campbell, must replace with nice operator memory */
|
||||
#define GESTURE_MEMORY
|
||||
|
||||
#ifdef GESTURE_MEMORY
|
||||
extern int circle_select_size;
|
||||
#endif
|
||||
|
||||
#endif /* __WM_H__ */
|
||||
|
||||
|
|
Loading…
Reference in New Issue