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:
Hans Goudey 2020-11-17 10:07:38 -05:00
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
5 changed files with 15 additions and 1 deletions

View File

@ -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) ?

View File

@ -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, &region->panels, block, panel_type, panel, &open);

View File

@ -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);
}

View File

@ -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);

View File

@ -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) */