Merge branch 'blender-v3.0-release'
This commit is contained in:
commit
c09e8a3590
|
@ -1762,6 +1762,8 @@ void UI_panel_header_buttons_begin(struct Panel *panel);
|
|||
void UI_panel_header_buttons_end(struct Panel *panel);
|
||||
void UI_panel_end(struct Panel *panel, int width, int height);
|
||||
|
||||
void UI_panel_context_pointer_set(struct Panel *panel, const char *name, struct PointerRNA *ptr);
|
||||
|
||||
bool UI_panel_is_closed(const struct Panel *panel);
|
||||
bool UI_panel_is_active(const struct Panel *panel);
|
||||
void UI_panel_label_offset(const struct uiBlock *block, int *r_x, int *r_y);
|
||||
|
|
|
@ -486,8 +486,12 @@ static void reorder_instanced_panel_list(bContext *C, ARegion *region, Panel *dr
|
|||
/* Set the bit to tell the interface to instanced the list. */
|
||||
drag_panel->flag |= PNL_INSTANCED_LIST_ORDER_CHANGED;
|
||||
|
||||
CTX_store_set(C, drag_panel->runtime.context);
|
||||
|
||||
/* Finally, move this panel's list item to the new index in its list. */
|
||||
drag_panel->type->reorder(C, drag_panel, move_to_index);
|
||||
|
||||
CTX_store_set(C, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2458,6 +2462,17 @@ static void ui_panel_custom_data_set_recursive(Panel *panel, PointerRNA *custom_
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a context for this entire panel and its current layout. This should be used whenever panel
|
||||
* callbacks that are called outside of regular drawing might require context. Currently it affects
|
||||
* the #PanelType.reorder callback only.
|
||||
*/
|
||||
void UI_panel_context_pointer_set(Panel *panel, const char *name, PointerRNA *ptr)
|
||||
{
|
||||
uiLayoutSetContextPointer(panel->layout, name, ptr);
|
||||
panel->runtime.context = uiLayoutGetContextStore(panel->layout);
|
||||
}
|
||||
|
||||
void UI_panel_custom_data_set(Panel *panel, PointerRNA *custom_data)
|
||||
{
|
||||
BLI_assert(panel->type != NULL);
|
||||
|
|
|
@ -2727,7 +2727,12 @@ static void draw_constraint_header(uiLayout *layout, Object *ob, bConstraint *co
|
|||
PointerRNA ptr;
|
||||
RNA_pointer_create(&ob->id, &RNA_Constraint, con, &ptr);
|
||||
|
||||
uiLayoutSetContextPointer(layout, "constraint", &ptr);
|
||||
if (block->panel) {
|
||||
UI_panel_context_pointer_set(block->panel, "constraint", &ptr);
|
||||
}
|
||||
else {
|
||||
uiLayoutSetContextPointer(layout, "constraint", &ptr);
|
||||
}
|
||||
|
||||
/* Constraint type icon. */
|
||||
uiLayout *sub = uiLayoutRow(layout, false);
|
||||
|
|
|
@ -232,7 +232,7 @@ PointerRNA *gpencil_modifier_panel_get_property_pointers(Panel *panel, PointerRN
|
|||
UI_block_lock_clear(block);
|
||||
UI_block_lock_set(block, ID_IS_LINKED((Object *)ptr->owner_id), ERROR_LIBDATA_MESSAGE);
|
||||
|
||||
uiLayoutSetContextPointer(panel->layout, "modifier", ptr);
|
||||
UI_panel_context_pointer_set(panel, "modifier", ptr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
@ -312,7 +312,7 @@ static void gpencil_modifier_panel_header(const bContext *UNUSED(C), Panel *pane
|
|||
PointerRNA *ptr = UI_panel_custom_data_get(panel);
|
||||
GpencilModifierData *md = (GpencilModifierData *)ptr->data;
|
||||
|
||||
uiLayoutSetContextPointer(panel->layout, "modifier", ptr);
|
||||
UI_panel_context_pointer_set(panel, "modifier", ptr);
|
||||
|
||||
const GpencilModifierTypeInfo *mti = BKE_gpencil_modifier_get_info(md->type);
|
||||
bool narrow_panel = (panel->sizex < UI_UNIT_X * 9 && panel->sizex != 0);
|
||||
|
|
|
@ -313,8 +313,6 @@ static void panel_draw(const bContext *C, Panel *panel)
|
|||
UI_TEMPLATE_LIST_FLAG_NONE);
|
||||
|
||||
uiLayout *col = uiLayoutColumn(row, false);
|
||||
uiLayoutSetContextPointer(col, "modifier", ptr);
|
||||
|
||||
uiLayout *sub = uiLayoutColumn(col, true);
|
||||
uiItemO(sub, "", ICON_ADD, "GPENCIL_OT_segment_add");
|
||||
uiItemO(sub, "", ICON_REMOVE, "GPENCIL_OT_segment_remove");
|
||||
|
|
|
@ -154,6 +154,9 @@ typedef struct Panel_Runtime {
|
|||
/* Pointer to the panel's block. Useful when changes to panel #uiBlocks
|
||||
* need some context from traversal of the panel "tree". */
|
||||
struct uiBlock *block;
|
||||
|
||||
/* Non-owning pointer. The context is stored in the block. */
|
||||
struct bContextStore *context;
|
||||
} Panel_Runtime;
|
||||
|
||||
/** The part from uiBlock that needs saved in file. */
|
||||
|
|
|
@ -132,7 +132,7 @@ PointerRNA *modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_
|
|||
uiBlock *block = uiLayoutGetBlock(panel->layout);
|
||||
UI_block_lock_set(block, ID_IS_LINKED((Object *)ptr->owner_id), ERROR_LIBDATA_MESSAGE);
|
||||
|
||||
uiLayoutSetContextPointer(panel->layout, "modifier", ptr);
|
||||
UI_panel_context_pointer_set(panel, "modifier", ptr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ static void modifier_panel_header(const bContext *C, Panel *panel)
|
|||
ModifierData *md = (ModifierData *)ptr->data;
|
||||
Object *ob = (Object *)ptr->owner_id;
|
||||
|
||||
uiLayoutSetContextPointer(panel->layout, "modifier", ptr);
|
||||
UI_panel_context_pointer_set(panel, "modifier", ptr);
|
||||
|
||||
const ModifierTypeInfo *mti = BKE_modifier_get_info(md->type);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
|
|
@ -117,7 +117,7 @@ PointerRNA *shaderfx_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_
|
|||
RNA_pointer_create(ptr->owner_id, &RNA_Object, ptr->owner_id, r_ob_ptr);
|
||||
}
|
||||
|
||||
uiLayoutSetContextPointer(panel->layout, "shaderfx", ptr);
|
||||
UI_panel_context_pointer_set(panel, "shaderfx", ptr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue