Fix T82341: Warning in terminal during property search
After recent changes to the context panel layout (rB187cc5e26d28b1a8), there has been an error printed when running propery search: > Error: separator_spacer() not supported in popups. The layout code thinks it's drawing in a menu because region->visible isn't properly set for the other tab searches. This patch sets that field for the temporary searching region, but it also disables searching in the context breadcrumbs panel, because at best this will just give results for the names of the active object, etc. This isn't helpful since those labels are mostly in every tab anyway. Differential Revision: https://developer.blender.org/D9425
This commit is contained in:
parent
0724fabcf5
commit
cc0b8cb359
Notes:
blender-bot
2023-02-14 07:39:44 +01:00
Referenced by issue #82593, Assert when using property search Referenced by issue #82341, Property Search: Warning in terminal
|
@ -5167,6 +5167,10 @@ bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (block->panel && block->panel->type && block->panel->type->flag & PNL_NO_SEARCH) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool panel_label_matches = block_search_panel_label_matches(block, search_filter);
|
||||
|
||||
const bool has_result = (panel_label_matches) ?
|
||||
|
|
|
@ -3080,6 +3080,11 @@ static bool panel_property_search(const bContext *C,
|
|||
uiBlock *block = UI_block_begin(C, region, panel_type->idname, UI_EMBOSS);
|
||||
UI_block_set_search_only(block, true);
|
||||
|
||||
/* Skip panels that give meaningless search results. */
|
||||
if (panel_type->flag & PNL_NO_SEARCH) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (panel == NULL) {
|
||||
bool open; /* Dummy variable. */
|
||||
panel = UI_panel_begin(region, ®ion->panels, block, panel_type, panel, &open);
|
||||
|
|
|
@ -1182,7 +1182,7 @@ void buttons_context_register(ARegionType *art)
|
|||
strcpy(pt->translation_context, BLT_I18NCONTEXT_DEFAULT_BPYRNA);
|
||||
pt->poll = buttons_panel_context_poll;
|
||||
pt->draw = buttons_panel_context_draw;
|
||||
pt->flag = PNL_NO_HEADER;
|
||||
pt->flag = PNL_NO_HEADER | PNL_NO_SEARCH;
|
||||
BLI_addtail(&art->paneltypes, pt);
|
||||
}
|
||||
|
||||
|
|
|
@ -402,6 +402,9 @@ static void property_search_all_tabs(const bContext *C,
|
|||
ScrArea *area_original = CTX_wm_area(C);
|
||||
ScrArea area_copy = *area_original;
|
||||
ARegion *region_copy = BKE_area_region_copy(area_copy.type, region_original);
|
||||
/* Set the region visible field. Otherwise some layout code thinks we're drawing in a popup.
|
||||
* This likely isn't necessary, but it's nice to emulate a "real" region where possible. */
|
||||
region_copy->visible = true;
|
||||
CTX_wm_area_set((bContext *)C, &area_copy);
|
||||
CTX_wm_region_set((bContext *)C, region_copy);
|
||||
|
||||
|
|
|
@ -568,6 +568,8 @@ enum {
|
|||
PNL_INSTANCED = (1 << 4),
|
||||
/** Draw panel like a box widget. */
|
||||
PNL_DRAW_BOX = (1 << 6),
|
||||
/** Don't search this panel for property search. */
|
||||
PNL_NO_SEARCH = (1 << 7),
|
||||
};
|
||||
|
||||
/* Fallback panel category (only for old scripts which need updating) */
|
||||
|
|
Loading…
Reference in New Issue