diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2021-10-22 14:13:48 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2021-10-22 20:23:18 +0300 |
commit | 7ac4e874db5a176429da2cf869b0552a24ef0b3e (patch) | |
tree | d6234fbd453d8bf9b1c23c0218279cb64558fb5e /source/blender/editors/interface/interface_panel.c | |
parent | cca811de98fa9eeddc128d1fa0e26e4ec1b700f9 (diff) |
Fix panel pinning showing for instanced panels (e.g. FCurve modifiers)
This was reported for FCurve modifiers, but was also true (in theory) for
other instanced panels (regular modifiers, spreadsheet filters, ...),
these would not show pinning for other reasons (no caterories).
So in the case of the Graph Editor the follwing happens:
`graph_buttons_register` only registers `GRAPH_PT_modifiers`, the panel
itself has no header (PANEL_TYPE_NO_HEADER), further panels for
individual modifiers are added dynamically in `graph_panel_modifiers`.
So when pinning a particular modifier, we would pin e.g. `GRAPH_PT_noise`
(not `GRAPH_PT_modifiers`).
ED_region_panels_layout_ex would only collect panels known to
`graph_buttons_register` (so is not aware of the specific panels of
modifiers). So while I think it should be possible to pin
`GRAPH_PT_modifiers` on top of an individual modifier's panel this would
result in all modifiers being shown in other categories [which would also
be weird]. Panel header layout was also not correct (drawing the pin
icon over the modifier delete icon).
So to resolve this, just dont use pinning for these type of panels.
part of T92293.
Maniphest Tasks: T92293
Differential Revision: https://developer.blender.org/D12965
Diffstat (limited to 'source/blender/editors/interface/interface_panel.c')
-rw-r--r-- | source/blender/editors/interface/interface_panel.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index 3cc9a743a17..a22351eea7e 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -2100,7 +2100,7 @@ static void ui_handle_panel_header(const bContext *C, BLI_assert(!(panel->type->flag & PANEL_TYPE_NO_HEADER)); const bool is_subpanel = (panel->type->parent != NULL); - const bool use_pin = UI_panel_category_is_visible(region) && !is_subpanel; + const bool use_pin = UI_panel_category_is_visible(region) && UI_panel_can_be_pinned(panel); const bool show_pin = use_pin && (panel->flag & PNL_PIN); const bool show_drag = !is_subpanel; @@ -2497,6 +2497,11 @@ PointerRNA *UI_region_panel_custom_data_under_cursor(const bContext *C, const wm return NULL; } +bool UI_panel_can_be_pinned(const Panel *panel) +{ + return (panel->type->parent == NULL) && !(panel->type->flag & PANEL_TYPE_INSTANCED); +} + /** \} */ /* -------------------------------------------------------------------- */ |