WM: move theme check out of ED_view3d_draw_select_loop
authorCampbell Barton <ideasman42@gmail.com>
Sat, 26 Aug 2017 14:48:52 +0000 (00:48 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 26 Aug 2017 14:48:52 +0000 (00:48 +1000)
In 2.8x this needs to be in view3d_opengl_select,
so simplest to make in master too.

source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_view.c

index 3d35d828e933848ddae1e45ddb0e609b37f8c99d..56508ea989a8689eb5d20898873056d23cf651d6 100644 (file)
@@ -2523,14 +2523,9 @@ void ED_view3d_draw_select_loop(
         ViewContext *vc, Scene *scene, View3D *v3d, ARegion *ar,
         bool use_obedit_skip, bool use_nearest)
 {
-       struct bThemeState theme_state;
        short code = 1;
        const short dflag = DRAW_PICKING | DRAW_CONSTCOLOR;
 
-       /* Tools may request depth outside of regular drawing code. */
-       UI_Theme_Store(&theme_state);
-       UI_SetTheme(SPACE_VIEW3D, RGN_TYPE_WINDOW);
-
        if (vc->obedit && vc->obedit->type == OB_MBALL) {
                draw_object(scene, ar, v3d, BASACT, dflag);
        }
@@ -2574,8 +2569,6 @@ void ED_view3d_draw_select_loop(
                        }
                }
        }
-
-       UI_Theme_Restore(&theme_state);
 }
 
 typedef struct View3DShadow {
index 1c919ba1e7500675bdf236c732434d758ff02ff0..16b626a5be4b4c3051d7b93952ebb1efc95ccf40 100644 (file)
@@ -54,6 +54,8 @@
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
 
+#include "UI_resources.h"
+
 #include "GPU_select.h"
 
 #include "WM_api.h"
@@ -1206,6 +1208,7 @@ int view3d_opengl_select(
         ViewContext *vc, unsigned int *buffer, unsigned int bufsize, const rcti *input,
         eV3DSelectMode select_mode)
 {
+       struct bThemeState theme_state;
        Scene *scene = vc->scene;
        View3D *v3d = vc->v3d;
        ARegion *ar = vc->ar;
@@ -1250,6 +1253,10 @@ int view3d_opengl_select(
                }
        }
 
+       /* Tools may request depth outside of regular drawing code. */
+       UI_Theme_Store(&theme_state);
+       UI_SetTheme(SPACE_VIEW3D, RGN_TYPE_WINDOW);
+
        /* Re-use cache (rect must be smaller then the cached)
         * other context is assumed to be unchanged */
        if (GPU_select_is_cached()) {
@@ -1302,6 +1309,8 @@ int view3d_opengl_select(
 finally:
        if (hits < 0) printf("Too many objects in select buffer\n");  /* XXX make error message */
 
+       UI_Theme_Restore(&theme_state);
+
        return hits;
 }