Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Jones <jjones780>2019-01-10 17:46:44 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-01-10 17:55:34 +0300
commitdb36eff9f7d1eea8ed93434bdb679c37e31681db (patch)
treeea790b0ee8371dfac928952324a131cd14130104 /source/blender
parentf572a157ba7846940012271a030de89db0a93c33 (diff)
UI: make pie menus stick only when tapping key.
When holding down the key for a while, the pie menu will disappear when releasing the key. This is under the assumption that in this case the user decided to cancel the action. Differential Revision: https://developer.blender.org/D4180
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenloader/intern/versioning_userdef.c4
-rw-r--r--source/blender/editors/interface/interface_handlers.c6
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c6
4 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 59745f7bbf3..4fed46170a9 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -470,6 +470,10 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
*/
{
/* (keep this block even if it becomes empty). */
+
+ if (userdef->pie_tap_timeout == 0) {
+ userdef->pie_tap_timeout = 20;
+ }
}
if (userdef->pixelsize == 0.0f)
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 32cd22b0368..f649cfb04e2 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -9320,6 +9320,7 @@ static int ui_pie_handler(bContext *C, const wmEvent *event, uiPopupBlockHandle
ui_window_to_block_fl(ar, block, &event_xy[0], &event_xy[1]);
+ /* Distance from initial point. */
dist = ui_block_calc_pie_segment(block, event_xy);
if (but && button_modal_state(but->active->state)) {
@@ -9404,8 +9405,9 @@ static int ui_pie_handler(bContext *C, const wmEvent *event, uiPopupBlockHandle
ED_region_tag_redraw(ar);
}
else {
- /* distance from initial point */
- if (!(block->pie_data.flags & UI_PIE_DRAG_STYLE)) {
+ if ((duration < 0.01 * U.pie_tap_timeout) &&
+ !(block->pie_data.flags & UI_PIE_DRAG_STYLE))
+ {
block->pie_data.flags |= UI_PIE_CLICK_STYLE;
}
else {
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index f629e1c787a..85fdc87d762 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -760,7 +760,7 @@ typedef struct UserDef {
* If keeping a pie menu spawn button pressed after this time,
* it turns into a drag/release pie menu.
*/
- short pie_interaction_type;
+ short pie_tap_timeout;
/**
* Direction in the pie menu will always be calculated from the
* initial position within this time limit.
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index d8d11af6bd5..157bbf16a24 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -3809,6 +3809,12 @@ static void rna_def_userdef_view(BlenderRNA *brna)
"Pie menus will use the initial mouse position as center for this amount of time "
"(in 1/100ths of sec)");
+ prop = RNA_def_property(srna, "pie_tap_timeout", PROP_INT, PROP_NONE);
+ RNA_def_property_range(prop, 0, 1000);
+ RNA_def_property_ui_text(prop, "Tap Key Timeout",
+ "Pie menu button held longer than this will dismiss menu on release."
+ "(in 1/100ths of sec)");
+
prop = RNA_def_property(srna, "pie_animation_timeout", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 0, 1000);
RNA_def_property_ui_text(prop, "Animation Timeout",