Allow operators to override asset applying on click through the keymap
This commit is contained in:
parent
4b4cf6da9a
commit
2110b71f1c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue