Fix error in operator poll functions
- PALETTE_OT_color_add: crashed without a brush. - SCREEN_OT_actionzone: crashed without a window. - PREFERENCES_OT_studiolight_show: exception when opening prefs failed.
This commit is contained in:
parent
34e30baedf
commit
524d9a3e2f
|
@ -1116,6 +1116,10 @@ class PREFERENCES_OT_studiolight_show(Operator):
|
|||
bl_label = ""
|
||||
bl_options = {'INTERNAL'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, _context):
|
||||
return bpy.ops.screen.userpref_show.poll()
|
||||
|
||||
def execute(self, context):
|
||||
context.preferences.active_section = 'LIGHTS'
|
||||
bpy.ops.screen.userpref_show('INVOKE_DEFAULT')
|
||||
|
|
|
@ -723,15 +723,16 @@ typedef struct sActionzoneData {
|
|||
static bool actionzone_area_poll(bContext *C)
|
||||
{
|
||||
wmWindow *win = CTX_wm_window(C);
|
||||
bScreen *screen = WM_window_get_active_screen(win);
|
||||
if (win && win->eventstate) {
|
||||
bScreen *screen = WM_window_get_active_screen(win);
|
||||
if (screen) {
|
||||
const int *xy = &win->eventstate->xy[0];
|
||||
|
||||
if (screen && win && win->eventstate) {
|
||||
const int *xy = &win->eventstate->xy[0];
|
||||
|
||||
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
|
||||
LISTBASE_FOREACH (AZone *, az, &area->actionzones) {
|
||||
if (BLI_rcti_isect_pt_v(&az->rect, xy)) {
|
||||
return true;
|
||||
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
|
||||
LISTBASE_FOREACH (AZone *, az, &area->actionzones) {
|
||||
if (BLI_rcti_isect_pt_v(&az->rect, xy)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -361,7 +361,6 @@ static int palette_color_add_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Paint *paint = BKE_paint_get_active_from_context(C);
|
||||
Brush *brush = paint->brush;
|
||||
ePaintMode mode = BKE_paintmode_get_active_from_context(C);
|
||||
Palette *palette = paint->palette;
|
||||
PaletteColor *color;
|
||||
|
@ -369,17 +368,20 @@ static int palette_color_add_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
color = BKE_palette_color_add(palette);
|
||||
palette->active_color = BLI_listbase_count(&palette->colors) - 1;
|
||||
|
||||
if (ELEM(mode,
|
||||
PAINT_MODE_TEXTURE_3D,
|
||||
PAINT_MODE_TEXTURE_2D,
|
||||
PAINT_MODE_VERTEX,
|
||||
PAINT_MODE_SCULPT)) {
|
||||
copy_v3_v3(color->rgb, BKE_brush_color_get(scene, brush));
|
||||
color->value = 0.0;
|
||||
}
|
||||
else if (mode == PAINT_MODE_WEIGHT) {
|
||||
zero_v3(color->rgb);
|
||||
color->value = brush->weight;
|
||||
if (paint->brush) {
|
||||
const Brush *brush = paint->brush;
|
||||
if (ELEM(mode,
|
||||
PAINT_MODE_TEXTURE_3D,
|
||||
PAINT_MODE_TEXTURE_2D,
|
||||
PAINT_MODE_VERTEX,
|
||||
PAINT_MODE_SCULPT)) {
|
||||
copy_v3_v3(color->rgb, BKE_brush_color_get(scene, brush));
|
||||
color->value = 0.0;
|
||||
}
|
||||
else if (mode == PAINT_MODE_WEIGHT) {
|
||||
zero_v3(color->rgb);
|
||||
color->value = brush->weight;
|
||||
}
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
|
Loading…
Reference in New Issue