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
This commit is contained in:
parent
f572a157ba
commit
db36eff9f7
|
@ -344,6 +344,7 @@ class USERPREF_PT_interface_menus_mouse_over(PreferencePanel):
|
|||
class USERPREF_PT_interface_menus_pie(PreferencePanel):
|
||||
bl_label = "Pie Menus"
|
||||
bl_parent_id = "USERPREF_PT_interface_menus"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_props(self, context, layout):
|
||||
prefs = context.preferences
|
||||
|
@ -352,6 +353,7 @@ class USERPREF_PT_interface_menus_pie(PreferencePanel):
|
|||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(view, "pie_animation_timeout")
|
||||
flow.prop(view, "pie_tap_timeout")
|
||||
flow.prop(view, "pie_initial_timeout")
|
||||
flow.prop(view, "pie_menu_radius")
|
||||
flow.prop(view, "pie_menu_threshold")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue