Commit: 2110b71f1cc8eac5e7494a827e0f83618e99bab2 Author: Julian Eisel Date: Fri Feb 3 15:40:32 2023 +0100 Branches: asset-shelf https://developer.blender.org/rB2110b71f1cc8eac5e7494a827e0f83618e99bab2
Allow operators to override asset applying on click through the keymap =================================================================== M source/blender/editors/asset/intern/asset_shelf.cc M source/blender/editors/include/ED_screen.h M source/blender/editors/interface/interface_template_asset_shelf.cc M source/blender/editors/screen/area.c M source/blender/editors/space_view3d/space_view3d.cc =================================================================== diff --git a/source/blender/editors/asset/intern/asset_shelf.cc b/source/blender/editors/asset/intern/asset_shelf.cc index 8e9f65c4270..6974397abfe 100644 --- a/source/blender/editors/asset/intern/asset_shelf.cc +++ b/source/blender/editors/asset/intern/asset_shelf.cc @@ -207,6 +207,7 @@ int ED_asset_shelf_context(const bContext *C, { static const char *context_dir[] = { "asset_shelf_settings", + "active_file", /* XXX yuk... */ nullptr, }; @@ -223,6 +224,28 @@ int ED_asset_shelf_context(const bContext *C, return CTX_RESULT_OK; } + /* XXX hack. Get the asset from the hovered button, but needs to be the file... */ + if (CTX_data_equals(member, "active_file")) { + const uiBut *but = UI_context_active_but_get(C); + if (!but) { + return CTX_RESULT_NO_DATA; + } + + const bContextStore *but_context = UI_but_context_get(but); + if (!but_context) { + return CTX_RESULT_NO_DATA; + } + + const PointerRNA *file_ptr = CTX_store_ptr_lookup( + but_context, "active_file", &RNA_FileSelectEntry); + if (!file_ptr) { + return CTX_RESULT_NO_DATA; + } + + CTX_data_pointer_set_ptr(result, file_ptr); + return CTX_RESULT_OK; + } + return CTX_RESULT_MEMBER_NOT_FOUND; } diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index b71fa39543c..2ad8e68c05d 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -701,7 +701,7 @@ enum { ED_KEYMAP_FOOTER = (1 << 9), ED_KEYMAP_GPENCIL = (1 << 10), ED_KEYMAP_NAVBAR = (1 << 11), - ED_KEYMAP_ASSET_SHELF_FOOTER = (1 << 12), + ED_KEYMAP_ASSET_SHELF = (1 << 12), }; /** #SCREEN_OT_space_context_cycle direction. */ diff --git a/source/blender/editors/interface/interface_template_asset_shelf.cc b/source/blender/editors/interface/interface_template_asset_shelf.cc index abab93c3612..114062716f9 100644 --- a/source/blender/editors/interface/interface_template_asset_shelf.cc +++ b/source/blender/editors/interface/interface_template_asset_shelf.cc @@ -13,6 +13,8 @@ #include "ED_asset.h" +#include "RNA_access.h" + #include "UI_interface.h" #include "UI_resources.h" #include "interface_intern.hh" @@ -53,6 +55,16 @@ static void asset_tile_draw(uiLayout &layout, const int height, const bool show_names) { + PointerRNA file_ptr; + RNA_pointer_create( + nullptr, + &RNA_FileSelectEntry, + /* XXX passing file pointer here, should be asset handle or asset representation. */ + const_cast<FileDirEntry *>(asset_handle.file_data), + &file_ptr); + + uiLayoutSetContextPointer(&layout, "active_file", &file_ptr); + uiBlock *block = uiLayoutGetBlock(&layout); uiBut *but = uiDefIconTextBut(block, UI_BTYPE_PREVIEW_TILE, diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 9f77fc80ddd..8fcba51d6f9 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1743,9 +1743,9 @@ static void ed_default_handlers( wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Region Context Menu", 0, 0); WM_event_add_keymap_handler(®ion->handlers, keymap); } - if (flag & ED_KEYMAP_ASSET_SHELF_FOOTER) { + if (flag & ED_KEYMAP_ASSET_SHELF) { /* standard keymap for Navigation bar regions */ - wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Region Context Menu", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Asset Shelf", 0, 0); WM_event_add_keymap_handler(®ion->handlers, keymap); } diff --git a/source/blender/editors/space_view3d/space_view3d.cc b/source/blender/editors/space_view3d/space_view3d.cc index 694792b8a04..1d27dae2bca 100644 --- a/source/blender/editors/space_view3d/space_view3d.cc +++ b/source/blender/editors/space_view3d/space_view3d.cc @@ -2184,7 +2184,8 @@ void ED_spacetype_view3d() art = MEM_cnew<ARegionType>("spacetype view3d asset shelf region"); art->regionid = RGN_TYPE_ASSET_SHELF; art->prefsizey = HEADERY * 3.5f; - art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | ED_KEYMAP_HEADER; + art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_ASSET_SHELF | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | + ED_KEYMAP_HEADER; art->listener = ED_asset_shelf_region_listen; art->context = view3d_asset_shelf_context; art->init = view3d_header_region_init; @@ -2194,7 +2195,7 @@ void ED_spacetype_view3d() art = MEM_cnew<ARegionType>("spacetype view3d asset shelf footer region"); art->regionid = RGN_TYPE_ASSET_SHELF_FOOTER; art->prefsizey = HEADERY; - art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_FOOTER; + art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_ASSET_SHELF | ED_KEYMAP_VIEW2D | ED_KEYMAP_FOOTER; art->init = ED_asset_shelf_footer_region_init; art->draw = ED_asset_shelf_footer_region; art->listener = ED_asset_shelf_footer_region_listen; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs