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>2021-11-02 11:35:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-11-02 11:35:17 +0300
commit69a7734b75c3044b760061a1141ba6dc95e419a6 (patch)
tree6b2e4fcd03176e3e922e3c0af0519d98c70dc895
parent2fb43f08e74cf1b209ba3f69d9e5e657beccc37f (diff)
UI: always show the cursor while transforming the cursor
-rw-r--r--source/blender/blenkernel/BKE_global.h6
-rw-r--r--source/blender/draw/intern/draw_view.c5
-rw-r--r--source/blender/editors/space_sequencer/space_sequencer.c16
-rw-r--r--source/blender/editors/transform/transform_convert.c3
4 files changed, 28 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h
index 7696b5c0189..bacdd4adc76 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -211,6 +211,12 @@ enum {
G_TRANSFORM_SEQ = (1 << 2),
G_TRANSFORM_FCURVES = (1 << 3),
G_TRANSFORM_WM = (1 << 4),
+ /**
+ * Set when transforming the cursor it's self.
+ * Used as a hint to draw the cursor (even when hidden).
+ * Otherwise it's not possible to see whats being transformed.
+ */
+ G_TRANSFORM_CURSOR = (1 << 5),
};
/** Defined in blender.c */
diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c
index bbd345271b1..de43d2aba0f 100644
--- a/source/blender/draw/intern/draw_view.c
+++ b/source/blender/draw/intern/draw_view.c
@@ -40,6 +40,7 @@
#include "WM_types.h"
+#include "BKE_global.h"
#include "BKE_object.h"
#include "BKE_paint.h"
@@ -63,6 +64,10 @@ void DRW_draw_region_info(void)
static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, ViewLayer *view_layer)
{
+ if (G.moving & G_TRANSFORM_CURSOR) {
+ return true;
+ }
+
View3D *v3d = draw_ctx->v3d;
if ((v3d->flag2 & V3D_HIDE_OVERLAYS) || (v3d->overlay.flag & V3D_OVERLAY_HIDE_CURSOR)) {
return false;
diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c
index 7b763ac8540..ed8305cd311 100644
--- a/source/blender/editors/space_sequencer/space_sequencer.c
+++ b/source/blender/editors/space_sequencer/space_sequencer.c
@@ -775,6 +775,19 @@ static void sequencer_preview_region_view2d_changed(const bContext *C, ARegion *
sseq->flag &= ~SEQ_ZOOM_TO_FIT;
}
+static bool is_cursor_visible(const SpaceSeq *sseq)
+{
+ if (G.moving & G_TRANSFORM_CURSOR) {
+ return true;
+ }
+
+ if ((sseq->flag & SEQ_SHOW_OVERLAY) &&
+ (sseq->preview_overlay.flag & SEQ_PREVIEW_SHOW_2D_CURSOR) != 0) {
+ return true;
+ }
+ return false;
+}
+
static void sequencer_preview_region_draw(const bContext *C, ARegion *region)
{
ScrArea *area = CTX_wm_area(C);
@@ -809,8 +822,7 @@ static void sequencer_preview_region_draw(const bContext *C, ARegion *region)
}
/* No need to show the cursor for scopes. */
- if (draw_overlay && (is_playing == false) && (sseq->mainb == SEQ_DRAW_IMG_IMBUF) &&
- (sseq->preview_overlay.flag & SEQ_PREVIEW_SHOW_2D_CURSOR) != 0) {
+ if ((is_playing == false) && (sseq->mainb == SEQ_DRAW_IMG_IMBUF) && is_cursor_visible(sseq)) {
GPU_color_mask(true, true, true, true);
GPU_depth_mask(false);
GPU_depth_test(GPU_DEPTH_NONE);
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index 781bf221dd2..ff20f569a71 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -965,6 +965,9 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
int special_transform_moving(TransInfo *t)
{
+ if (t->options & CTX_CURSOR) {
+ return G_TRANSFORM_CURSOR;
+ }
if (t->spacetype == SPACE_SEQ) {
return G_TRANSFORM_SEQ;
}