diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-03-20 14:14:13 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-03-20 14:19:16 +0300 |
commit | ef09aff61cdc4dc940a022c9e0c7c0ad9519780f (patch) | |
tree | 5f79be02041b9ae59254fe78a30bd2907f57c833 /source/blender | |
parent | 454b90483dc72608e9bf7fc205b1ca849622f8d8 (diff) |
Preferences: add threshold for cursor motion
A hard coded threshold was used to ignore cursor motion,
make this a preference since tablet users may want to increase it
since a pen hovering isn't as easy to keep still as a mouse.
Resolves T56278
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_blender_version.h | 2 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_userdef.c | 4 | ||||
-rw-r--r-- | source/blender/editors/armature/armature_select.c | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 5 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_select.c | 2 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 7 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_types.h | 4 |
9 files changed, 23 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index cad733f774d..62934b702f8 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -24,7 +24,7 @@ * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 280 -#define BLENDER_SUBVERSION 50 +#define BLENDER_SUBVERSION 51 /* Several breakages with 280, e.g. collections vs layers */ #define BLENDER_MINVERSION 280 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c index 14d10bbf85e..ee6b0ab9533 100644 --- a/source/blender/blenloader/intern/versioning_userdef.c +++ b/source/blender/blenloader/intern/versioning_userdef.c @@ -481,6 +481,10 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef) BKE_addon_remove_safe(&userdef->addons, "io_scene_3ds"); } + if (!USER_VERSION_ATLEAST(280, 51)) { + userdef->move_threshold = 2; + } + /** * Include next version bump. */ diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c index 8e58f14ec99..b10db511eb4 100644 --- a/source/blender/editors/armature/armature_select.c +++ b/source/blender/editors/armature/armature_select.c @@ -421,7 +421,7 @@ static EditBone *get_nearest_editbonepoint( if (vc->v3d->shading.type > OB_WIRE) { do_nearest = true; - if (len_manhattan_v2v2_int(vc->mval, last_mval) < WM_EVENT_CURSOR_MOTION_THRESHOLD) { + if (len_manhattan_v2v2_int(vc->mval, last_mval) <= WM_EVENT_CURSOR_MOTION_THRESHOLD) { do_nearest = false; } } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 50ff2c1e7ff..f31e90370a3 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -8136,7 +8136,10 @@ static int ui_handle_button_event(bContext *C, const wmEvent *event, uiBut *but) /* Drag on a hold button (used in the toolbar) now opens it immediately. */ if (data->hold_action_timer) { if (but->flag & UI_SELECT) { - if (len_manhattan_v2v2_int(&event->x, &event->prevx) >= WM_EVENT_CURSOR_MOTION_THRESHOLD) { + if (len_manhattan_v2v2_int(&event->x, &event->prevx) <= WM_EVENT_CURSOR_MOTION_THRESHOLD) { + /* pass */ + } + else { WM_event_remove_timer(data->wm, data->window, data->hold_action_timer); data->hold_action_timer = WM_event_add_timer(data->wm, data->window, TIMER, 0.0f); } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index b4dfcf9ab66..4ce21013924 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2511,7 +2511,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event) } case LEFTMOUSE: if (event->val == KM_RELEASE) { - if (len_manhattan_v2v2_int(&event->x, &rmd->origx) < WM_EVENT_CURSOR_MOTION_THRESHOLD) { + if (len_manhattan_v2v2_int(&event->x, &rmd->origx) <= WM_EVENT_CURSOR_MOTION_THRESHOLD) { if (rmd->ar->flag & RGN_FLAG_HIDDEN) { region_scale_toggle_hidden(C, rmd); } diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index d7128b7d21a..78a33a01908 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -1410,7 +1410,7 @@ static int mixed_bones_object_selectbuffer_extended( if (use_cycle) { if (v3d->shading.type > OB_WIRE) { do_nearest = true; - if (len_manhattan_v2v2_int(mval, last_mval) < WM_EVENT_CURSOR_MOTION_THRESHOLD) { + if (len_manhattan_v2v2_int(mval, last_mval) <= WM_EVENT_CURSOR_MOTION_THRESHOLD) { do_nearest = false; } } diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 1da28b4aa2d..d44b149d3fd 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -723,8 +723,8 @@ typedef struct UserDef { float gpencil_new_layer_col[4]; short tweak_threshold; + char move_threshold; char navigation_mode; - char _pad10; char font_path_ui[1024]; char font_path_ui_mono[1024]; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index f8908cba195..a2de1712960 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -4713,6 +4713,13 @@ static void rna_def_userdef_input(BlenderRNA *brna) "Number of pixels you have to drag before a tweak/drag event is triggered " "(otherwise click events are detected)"); + prop = RNA_def_property(srna, "move_threshold", PROP_INT, PROP_PIXEL); + RNA_def_property_range(prop, 0, 255); + RNA_def_property_ui_range(prop, 0, 10, 1, -1); + RNA_def_property_ui_text(prop, "Motion Threshold", + "Number of pixels you have to before the cursor is considered to have moved " + "(used for cycling selected items on successive clicks)"); + /* tablet pressure curve */ prop = RNA_def_property(srna, "pressure_threshold_max", PROP_FLOAT, PROP_FACTOR); RNA_def_property_range(prop, 0.0f, 1.0f); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 8ad63cb92c0..96560b423a1 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -499,8 +499,10 @@ typedef struct wmEvent { * Values below are ignored when detecting if the user interntionally moved the cursor. * Keep this very small since it's used for selection cycling for eg, * where we want intended adjustments to pass this threshold and select new items. + * + * Always check for <= this value since it may be zero. */ -#define WM_EVENT_CURSOR_MOTION_THRESHOLD (3 * U.dpi_fac) +#define WM_EVENT_CURSOR_MOTION_THRESHOLD ((float)U.move_threshold * U.dpi_fac) /* ************** custom wmEvent data ************** */ typedef struct wmTabletData { |