[Bf-blender-cvs] [1e3d6ae09b8] blender2.8: Gizmo: only use mousemove for generic gizmos
Campbell Barton
noreply at git.blender.org
Thu Sep 13 16:00:04 CEST 2018
Commit: 1e3d6ae09b89cb6ab6c357d506af7d0c635aa50e
Author: Campbell Barton
Date: Fri Sep 14 00:06:19 2018 +1000
Branches: blender2.8
https://developer.blender.org/rB1e3d6ae09b89cb6ab6c357d506af7d0c635aa50e
Gizmo: only use mousemove for generic gizmos
This caused slow performance for spin/bisect for eg.
===================================================================
M source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
M source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
M source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
M source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
M source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
===================================================================
diff --git a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
index eff05a74ea5..97f45bd53fd 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
@@ -234,6 +234,9 @@ static int gizmo_arrow_modal(
bContext *C, wmGizmo *gz, const wmEvent *event,
eWM_GizmoFlagTweak tweak_flag)
{
+ if (event->type != MOUSEMOVE) {
+ return OPERATOR_RUNNING_MODAL;
+ }
ArrowGizmo3D *arrow = (ArrowGizmo3D *)gz;
GizmoInteraction *inter = gz->interaction_data;
View3D *v3d = CTX_wm_view3d(C);
diff --git a/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
index 00902588408..1cff5b82484 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
@@ -849,6 +849,9 @@ static int gizmo_cage2d_modal(
bContext *C, wmGizmo *gz, const wmEvent *event,
eWM_GizmoFlagTweak UNUSED(tweak_flag))
{
+ if (event->type != MOUSEMOVE) {
+ return OPERATOR_RUNNING_MODAL;
+ }
/* For transform logic to be managable we operate in -0.5..0.5 2D space,
* no matter the size of the rectangle, mouse coorts are scaled to unit space.
* The mouse coords have been projected into the matrix so we don't need to worry about axis alignment.
diff --git a/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
index ae9a57205df..3b74311b800 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
@@ -477,6 +477,9 @@ static int gizmo_cage3d_modal(
bContext *C, wmGizmo *gz, const wmEvent *event,
eWM_GizmoFlagTweak UNUSED(tweak_flag))
{
+ if (event->type != MOUSEMOVE) {
+ return OPERATOR_RUNNING_MODAL;
+ }
/* For transform logic to be managable we operate in -0.5..0.5 2D space,
* no matter the size of the rectangle, mouse coorts are scaled to unit space.
* The mouse coords have been projected into the matrix so we don't need to worry about axis alignment.
diff --git a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
index 2432e2da3d2..f6108134cd9 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
@@ -396,6 +396,10 @@ static int gizmo_dial_modal(
bContext *C, wmGizmo *gz, const wmEvent *event,
eWM_GizmoFlagTweak UNUSED(tweak_flag))
{
+ if (event->type != MOUSEMOVE) {
+ return OPERATOR_RUNNING_MODAL;
+ }
+
const float co_outer[4] = {0.0f, DIAL_WIDTH, 0.0f}; /* coordinate at which the arc drawing will be started */
float angle_ofs, angle_delta;
diff --git a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
index c6090250db7..0f83e9a3514 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
@@ -65,6 +65,7 @@ typedef struct ValueInteraction {
} init;
struct {
float prop_value;
+ eWM_GizmoFlagTweak tweak_flag;
} prev;
float range[2];
} ValueInteraction;
@@ -78,8 +79,11 @@ static int gizmo_value_modal(
bContext *C, wmGizmo *gz, const wmEvent *event,
eWM_GizmoFlagTweak tweak_flag)
{
- ARegion *ar = CTX_wm_region(C);
ValueInteraction *inter = gz->interaction_data;
+ if ((event->type != MOUSEMOVE) && (inter->prev.tweak_flag == tweak_flag)) {
+ return OPERATOR_RUNNING_MODAL;
+ }
+ ARegion *ar = CTX_wm_region(C);
const float value_scale = 4.0f; /* Could be option. */
const float value_range = inter->range[1] - inter->range[0];
float value_delta = (
@@ -108,8 +112,11 @@ static int gizmo_value_modal(
SNPRINTF(str, "%.4f", value_final);
ED_area_status_text(sa, str);
}
- inter->prev.prop_value = value_final;
}
+
+ inter->prev.prop_value = value_final;
+ inter->prev.tweak_flag = tweak_flag;
+
return OPERATOR_RUNNING_MODAL;
}
More information about the Bf-blender-cvs
mailing list