Fix: wrong brush drawn in image painting, image editor if uv sculpt is on. Now the correct paint struct is returned and the image zoom is calculated correctly
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "DNA_meshdata_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_brush_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
|
||||
#include "BLI_bitmap.h"
|
||||
#include "BLI_utildefines.h"
|
||||
@@ -87,6 +88,7 @@ Paint *paint_get_active(Scene *sce)
|
||||
Paint *paint_get_active_from_context(const bContext *C)
|
||||
{
|
||||
Scene *sce = CTX_data_scene(C);
|
||||
SpaceImage *sima;
|
||||
|
||||
if (sce) {
|
||||
ToolSettings *ts = sce->toolsettings;
|
||||
@@ -95,12 +97,12 @@ Paint *paint_get_active_from_context(const bContext *C)
|
||||
if (sce->basact && sce->basact->object)
|
||||
obact = sce->basact->object;
|
||||
|
||||
if (CTX_wm_space_image(C) != NULL) {
|
||||
if ((sima = CTX_wm_space_image(C)) != NULL) {
|
||||
if (obact && obact->mode == OB_MODE_EDIT) {
|
||||
if (ts->use_uv_sculpt)
|
||||
return &ts->uvsculpt->paint;
|
||||
else
|
||||
if (sima->mode == SI_MODE_PAINT)
|
||||
return &ts->imapaint.paint;
|
||||
else if (ts->use_uv_sculpt)
|
||||
return &ts->uvsculpt->paint;
|
||||
}
|
||||
else {
|
||||
return &ts->imapaint.paint;
|
||||
|
@@ -5266,10 +5266,12 @@ static int get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy)
|
||||
if (!rv3d) {
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
ARegion *ar = CTX_wm_region(C);
|
||||
|
||||
ED_space_image_get_zoom(sima, ar, zoomx, zoomy);
|
||||
|
||||
return 1;
|
||||
if (sima->mode == SI_MODE_PAINT) {
|
||||
ED_space_image_get_zoom(sima, ar, zoomx, zoomy);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
*zoomx = *zoomy = 1;
|
||||
@@ -5290,16 +5292,13 @@ static void brush_drawcursor(bContext *C, int x, int y, void *UNUSED(customdata)
|
||||
Brush *brush = paint_brush(paint);
|
||||
|
||||
if (paint && brush && paint->flags & PAINT_SHOW_BRUSH) {
|
||||
ToolSettings *ts;
|
||||
float zoomx, zoomy;
|
||||
const float size = (float)BKE_brush_size_get(scene, brush);
|
||||
short use_zoom;
|
||||
float pixel_size;
|
||||
float alpha = 0.5f;
|
||||
|
||||
ts = scene->toolsettings;
|
||||
use_zoom = get_imapaint_zoom(C, &zoomx, &zoomy) &&
|
||||
!(ts->use_uv_sculpt && (scene->basact->object->mode == OB_MODE_EDIT));
|
||||
use_zoom = get_imapaint_zoom(C, &zoomx, &zoomy);
|
||||
|
||||
if (use_zoom) {
|
||||
pixel_size = size * max_ff(zoomx, zoomy);
|
||||
|
Reference in New Issue
Block a user