diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2014-10-10 21:13:40 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2014-10-13 16:35:41 +0400 |
commit | 9fcc1a32df1377d22b950854fabc7af53a67b813 (patch) | |
tree | fb11bec4ed32bf7703fefad1551390f4c62ca280 /source/blender/editors/interface/interface_intern.h | |
parent | 116439ed91dd313fdc30c93b5d76807b7473ad39 (diff) |
Pie menus: Confirm threshold
This commit adds a confirm threshold property to pie menus.
Basically, this will confirm the pie menu automatically when
the distance from the center of the pie exceeds that threshold without
a need to release the pie button.
The confirm threshold will only work if it is larger than the pie
threshold.
The confirmation actually occur when the mouse stops moving, to
allow multiple pie menus to be better linked together, (see below)
This functionality also facilitates the ability for chained pie menus by
dragging. Basically, a pie menu item can be a call_menu_pie operator and
the new pie menu will still use the original pie menu release event for
confirmation. This should allow for quick, gesture based navigation in
pie menu hierarchies (going back in the hierarchy is still not supported
though)
There will be a demonstration pie in the official add-on soon
Diffstat (limited to 'source/blender/editors/interface/interface_intern.h')
-rw-r--r-- | source/blender/editors/interface/interface_intern.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 2f66c4a9900..efd67effd73 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -168,9 +168,9 @@ enum { UI_PIE_INITIAL_DIRECTION = (1 << 1), /* use initial center of pie menu to calculate direction */ UI_PIE_DRAG_STYLE = (1 << 2), /* pie menu is drag style */ UI_PIE_INVALID_DIR = (1 << 3), /* mouse not far enough from center position */ - UI_PIE_FINISHED = (1 << 4), /* pie menu finished but we still wait for a release event */ - UI_PIE_CLICK_STYLE = (1 << 5), /* pie menu changed to click style, click to confirm */ - UI_PIE_ANIMATION_FINISHED = (1 << 6), /* pie animation finished, do not calculate any more motio */ + UI_PIE_CLICK_STYLE = (1 << 4), /* pie menu changed to click style, click to confirm */ + UI_PIE_ANIMATION_FINISHED = (1 << 5), /* pie animation finished, do not calculate any more motion */ + UI_PIE_GESTURE_END_WAIT = (1 << 6), /* pie gesture selection has been done, now wait for mouse motion to end */ }; #define PIE_CLICK_THRESHOLD_SQ 50.0f @@ -310,6 +310,8 @@ struct PieMenuData { float pie_dir[2]; float pie_center_init[2]; float pie_center_spawned[2]; + float last_pos[2]; + double duration_gesture; int flags; int event; /* initial event used to fire the pie menu, store here so we can query for release */ float alphafac; |