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:
authorCampbell Barton <ideasman42@gmail.com>2018-10-18 04:30:23 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-10-18 04:36:39 +0300
commit678c2003097d4a5f2def4e8a6f014420ad609d6e (patch)
tree26ebb486f80289bcb7384772dc3db3bbc2f67239
parent4c1250570bb0cb5db00a8b739482ed0cab948a47 (diff)
Gizmo: remove 'Click Anywhere' option
Having an invisible gizmo caused event handling problems (see: T56603). This is hard to avoid since gizmos are similar to buttons in the way they have priority over the regular keymap. Transform events use tweak so events to fall though to the general view 3d keymap (for cursor placement for eg).
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_toolbar.py34
-rw-r--r--source/blender/editors/transform/transform_gizmo_3d.c49
-rw-r--r--source/blender/makesdna/DNA_scene_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_scene.c5
4 files changed, 15 insertions, 75 deletions
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 435eff24fcf..5b5e90609c9 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -320,56 +320,41 @@ class _defs_transform:
@ToolDef.from_fn
def translate():
- def draw_settings(context, layout, tool):
- tool_settings = context.tool_settings
- layout.prop(tool_settings, "use_gizmo_apron")
return dict(
text="Move",
# cursor='SCROLL_XY',
icon="ops.transform.translate",
widget="TRANSFORM_GGT_gizmo",
operator="transform.translate",
- # TODO, implement as optional fallback gizmo
- # keymap=(
- # ("transform.translate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
- # ),
- draw_settings=draw_settings,
+ keymap=(
+ ("transform.translate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
+ ),
)
@ToolDef.from_fn
def rotate():
- def draw_settings(context, layout, tool):
- tool_settings = context.tool_settings
- layout.prop(tool_settings, "use_gizmo_apron")
return dict(
text="Rotate",
# cursor='SCROLL_XY',
icon="ops.transform.rotate",
widget="TRANSFORM_GGT_gizmo",
operator="transform.rotate",
- # TODO, implement as optional fallback gizmo
- # keymap=(
- # ("transform.rotate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
- # ),
- draw_settings=draw_settings,
+ keymap=(
+ ("transform.rotate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
+ ),
)
@ToolDef.from_fn
def scale():
- def draw_settings(context, layout, tool):
- tool_settings = context.tool_settings
- layout.prop(tool_settings, "use_gizmo_apron")
return dict(
text="Scale",
# cursor='SCROLL_XY',
icon="ops.transform.resize",
widget="TRANSFORM_GGT_gizmo",
operator="transform.resize",
- # TODO, implement as optional fallback gizmo
- # keymap=(
- # ("transform.resize", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
- # ),
- draw_settings=draw_settings,
+ keymap=(
+ ("transform.resize", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
+ ),
)
@ToolDef.from_fn
@@ -385,7 +370,6 @@ class _defs_transform:
def transform():
def draw_settings(context, layout, tool):
tool_settings = context.tool_settings
- layout.prop(tool_settings, "use_gizmo_apron")
layout.prop(tool_settings, "use_gizmo_mode")
return dict(
text="Transform",
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c
index bf9f09abf3a..6297cb57c03 100644
--- a/source/blender/editors/transform/transform_gizmo_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_3d.c
@@ -153,9 +153,7 @@ enum {
#define MAN_AXIS_RANGE_SCALE_START MAN_AXIS_SCALE_X
#define MAN_AXIS_RANGE_SCALE_END (MAN_AXIS_SCALE_ZX + 1)
- MAN_AXIS_APRON_C,
-
- MAN_AXIS_LAST = MAN_AXIS_APRON_C + 1,
+ MAN_AXIS_LAST = MAN_AXIS_SCALE_ZX + 1,
};
/* axis types */
@@ -169,7 +167,6 @@ enum {
typedef struct GizmoGroup {
bool all_hidden;
int twtype;
- int axis_type_default;
/* Users may change the twtype, detect changes to re-setup gizmo options. */
int twtype_init;
@@ -201,7 +198,7 @@ static wmGizmo *gizmo_get_axis_from_index(const GizmoGroup *ggd, const short axi
return ggd->gizmos[axis_idx];
}
-static short gizmo_get_axis_type(const int axis_idx, const int axis_type_default)
+static short gizmo_get_axis_type(const int axis_idx)
{
if (axis_idx >= MAN_AXIS_RANGE_TRANS_START && axis_idx < MAN_AXIS_RANGE_TRANS_END) {
return MAN_AXES_TRANSLATE;
@@ -212,9 +209,6 @@ static short gizmo_get_axis_type(const int axis_idx, const int axis_type_default
if (axis_idx >= MAN_AXIS_RANGE_SCALE_START && axis_idx < MAN_AXIS_RANGE_SCALE_END) {
return MAN_AXES_SCALE;
}
- if (axis_idx == MAN_AXIS_APRON_C) {
- return axis_type_default;
- }
BLI_assert(0);
return -1;
}
@@ -337,8 +331,6 @@ static bool gizmo_is_axis_visible(
rv3d->twdrawflag & MAN_SCALE_X &&
(twtype & SCE_GIZMO_SHOW_TRANSLATE) == 0 &&
(twtype & SCE_GIZMO_SHOW_ROTATE) == 0);
- case MAN_AXIS_APRON_C:
- return true;
}
return false;
}
@@ -1220,11 +1212,9 @@ static void gizmo_xform_message_subscribe(
if (type_fn == TRANSFORM_GGT_gizmo) {
extern PropertyRNA rna_ToolSettings_transform_pivot_point;
extern PropertyRNA rna_ToolSettings_use_gizmo_mode;
- extern PropertyRNA rna_ToolSettings_use_gizmo_apron;
const PropertyRNA *props[] = {
&rna_ToolSettings_transform_pivot_point,
&rna_ToolSettings_use_gizmo_mode,
- &rna_ToolSettings_use_gizmo_apron,
};
for (int i = 0; i < ARRAY_SIZE(props); i++) {
WM_msg_subscribe_rna(mbus, &toolsettings_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__);
@@ -1358,12 +1348,6 @@ static GizmoGroup *gizmogroup_init(wmGizmoGroup *gzgroup)
const wmGizmoType *gzt_dial = WM_gizmotype_find("GIZMO_GT_dial_3d", true);
const wmGizmoType *gzt_prim = WM_gizmotype_find("GIZMO_GT_primitive_3d", true);
- /* Fallback action. */
- {
- const wmGizmoType *gzt_mask = WM_gizmotype_find("GIZMO_GT_blank_3d", true);
- ggd->gizmos[MAN_AXIS_APRON_C] = WM_gizmo_new_ptr(gzt_mask, gzgroup, NULL);
- }
-
#define GIZMO_NEW_ARROW(v, draw_style) { \
ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_arrow, gzgroup, NULL); \
RNA_enum_set(ggd->gizmos[v]->ptr, "draw_style", draw_style); \
@@ -1452,22 +1436,9 @@ static void gizmogroup_init_properties_from_twtype(wmGizmoGroup *gzgroup)
} ot_store = {NULL};
GizmoGroup *ggd = gzgroup->customdata;
- if (ggd->twtype & SCE_GIZMO_SHOW_TRANSLATE) {
- ggd->axis_type_default = MAN_AXES_TRANSLATE;
- }
- else if (ggd->twtype & SCE_GIZMO_SHOW_ROTATE) {
- ggd->axis_type_default = MAN_AXES_ROTATE;
- }
- else if (ggd->twtype & SCE_GIZMO_SHOW_SCALE) {
- ggd->axis_type_default = MAN_AXES_SCALE;
- }
- else {
- ggd->axis_type_default = 0;
- }
-
MAN_ITER_AXES_BEGIN(axis, axis_idx)
{
- const short axis_type = gizmo_get_axis_type(axis_idx, ggd->axis_type_default);
+ const short axis_type = gizmo_get_axis_type(axis_idx);
bool constraint_axis[3] = {1, 0, 0};
PointerRNA *ptr = NULL;
@@ -1530,9 +1501,6 @@ static void gizmogroup_init_properties_from_twtype(wmGizmoGroup *gzgroup)
WM_gizmo_set_scale(axis, 0.2f);
}
break;
- case MAN_AXIS_APRON_C:
- WM_gizmo_set_scale(axis, 1.2f);
- break;
}
switch (axis_type) {
@@ -1651,7 +1619,7 @@ static void WIDGETGROUP_gizmo_refresh(const bContext *C, wmGizmoGroup *gzgroup)
MAN_ITER_AXES_BEGIN(axis, axis_idx)
{
- const short axis_type = gizmo_get_axis_type(axis_idx, ggd->axis_type_default);
+ const short axis_type = gizmo_get_axis_type(axis_idx);
const int aidx_norm = gizmo_orientation_axis(axis_idx, NULL);
WM_gizmo_set_matrix_location(axis, rv3d->twmat[3]);
@@ -1716,7 +1684,6 @@ static void WIDGETGROUP_gizmo_message_subscribe(
static void WIDGETGROUP_gizmo_draw_prepare(const bContext *C, wmGizmoGroup *gzgroup)
{
- const Scene *scene = CTX_data_scene(C);
GizmoGroup *ggd = gzgroup->customdata;
// ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C);
@@ -1740,13 +1707,10 @@ static void WIDGETGROUP_gizmo_draw_prepare(const bContext *C, wmGizmoGroup *gzgr
MAN_ITER_AXES_BEGIN(axis, axis_idx)
{
- const short axis_type = gizmo_get_axis_type(axis_idx, ggd->axis_type_default);
+ const short axis_type = gizmo_get_axis_type(axis_idx);
/* XXX maybe unset _HIDDEN flag on redraw? */
- if (axis_idx == MAN_AXIS_APRON_C) {
- WM_gizmo_set_flag(axis, WM_GIZMO_HIDDEN, (scene->toolsettings->gizmo_flag & SCE_GIZMO_DISABLE_APRON) != 0);
- }
- else if (gizmo_is_axis_visible(rv3d, ggd->twtype, idot, axis_type, axis_idx)) {
+ if (gizmo_is_axis_visible(rv3d, ggd->twtype, idot, axis_type, axis_idx)) {
WM_gizmo_set_flag(axis, WM_GIZMO_HIDDEN, false);
}
else {
@@ -1764,7 +1728,6 @@ static void WIDGETGROUP_gizmo_draw_prepare(const bContext *C, wmGizmoGroup *gzgr
case MAN_AXIS_ROT_C:
case MAN_AXIS_SCALE_C:
case MAN_AXIS_ROT_T:
- case MAN_AXIS_APRON_C:
WM_gizmo_set_matrix_rotation_from_z_axis(axis, rv3d->viewinv[2]);
break;
}
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 15e8f950686..ad38c7cfcdf 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -2074,8 +2074,6 @@ enum {
SCE_GIZMO_SHOW_TRANSLATE = (1 << 0),
SCE_GIZMO_SHOW_ROTATE = (1 << 1),
SCE_GIZMO_SHOW_SCALE = (1 << 2),
-
- SCE_GIZMO_DISABLE_APRON = (1 << 3),
};
/* ToolSettings.gpencil_flags */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index e845b31ca9c..7679ff41ba3 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2479,11 +2479,6 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Gizmo Mode", "");
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, "rna_ToolSettings_gizmo_flag_update");
- prop = RNA_def_property(srna, "use_gizmo_apron", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "gizmo_flag", SCE_GIZMO_DISABLE_APRON);
- RNA_def_property_ui_text(prop, "Click Anywhere", "Handle input not directly over the gizmo");
- RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
-
/* Grease Pencil */
prop = RNA_def_property(srna, "use_gpencil_additive_drawing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gpencil_flags", GP_TOOL_FLAG_RETAIN_LAST);