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 /source/blender/editors/transform/transform_gizmo_3d.c
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).
Diffstat (limited to 'source/blender/editors/transform/transform_gizmo_3d.c')
-rw-r--r--source/blender/editors/transform/transform_gizmo_3d.c49
1 files changed, 6 insertions, 43 deletions
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;
}