Commit: b3ee7ad2ccbf9aba225b55d6e46b5d7a73ef26d9 Author: Julian Eisel Date: Tue Jan 17 16:24:03 2023 +0100 Branches: asset-shelf https://developer.blender.org/rBb3ee7ad2ccbf9aba225b55d6e46b5d7a73ef26d9
Extend asset shelf region with a region for the catalogs & options The new region is empty, except of a dummy button. =================================================================== M source/blender/blenloader/intern/versioning_300.cc M source/blender/editors/asset/CMakeLists.txt A source/blender/editors/asset/ED_asset_shelf.h A source/blender/editors/asset/intern/asset_shelf.cc M source/blender/editors/include/ED_screen.h M source/blender/editors/interface/interface_handlers.cc M source/blender/editors/interface/resources.cc M source/blender/editors/screen/area.c M source/blender/editors/screen/screen_edit.c M source/blender/editors/screen/screen_ops.c M source/blender/editors/space_view3d/CMakeLists.txt M source/blender/editors/space_view3d/space_view3d.cc M source/blender/makesdna/DNA_screen_types.h M source/blender/makesrna/intern/rna_screen.c M source/blender/windowmanager/intern/wm_event_system.cc =================================================================== diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc index 7393f4fc171..460ee3b8719 100644 --- a/source/blender/blenloader/intern/versioning_300.cc +++ b/source/blender/blenloader/intern/versioning_300.cc @@ -3918,15 +3918,27 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain) if (sl->spacetype == SPACE_VIEW3D) { ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : &sl->regionbase; - ARegion *new_asset_shelf = do_versions_add_region_if_not_found( - regionbase, - RGN_TYPE_ASSET_SHELF, - "asset shelf for view3d (versioning)", - RGN_TYPE_UI); - if (new_asset_shelf != nullptr) { - new_asset_shelf->alignment = RGN_ALIGN_BOTTOM; - new_asset_shelf->flag |= RGN_FLAG_HIDDEN; - new_asset_shelf->flag = RGN_FLAG_HIDDEN | RGN_FLAG_DYNAMIC_SIZE; + { + ARegion *new_asset_shelf_footer = do_versions_add_region_if_not_found( + regionbase, + RGN_TYPE_ASSET_SHELF_FOOTER, + "asset shelf footer for view3d (versioning)", + RGN_TYPE_UI); + if (new_asset_shelf_footer != nullptr) { + new_asset_shelf_footer->alignment = RGN_ALIGN_BOTTOM; + new_asset_shelf_footer->flag |= RGN_FLAG_HIDDEN; + } + } + { + ARegion *new_asset_shelf = do_versions_add_region_if_not_found( + regionbase, + RGN_TYPE_ASSET_SHELF, + "asset shelf for view3d (versioning)", + RGN_TYPE_ASSET_SHELF_FOOTER); + if (new_asset_shelf != nullptr) { + new_asset_shelf->alignment = RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV; + new_asset_shelf->flag |= RGN_FLAG_DYNAMIC_SIZE; + } } } } diff --git a/source/blender/editors/asset/CMakeLists.txt b/source/blender/editors/asset/CMakeLists.txt index a4d05ebaffe..3e45a0bccdf 100644 --- a/source/blender/editors/asset/CMakeLists.txt +++ b/source/blender/editors/asset/CMakeLists.txt @@ -30,6 +30,7 @@ set(SRC intern/asset_list.cc intern/asset_mark_clear.cc intern/asset_ops.cc + intern/asset_shelf.cc intern/asset_temp_id_consumer.cc intern/asset_type.cc @@ -42,6 +43,7 @@ set(SRC ED_asset_list.h ED_asset_list.hh ED_asset_mark_clear.h + ED_asset_shelf.h ED_asset_temp_id_consumer.h ED_asset_type.h intern/asset_library_reference.hh diff --git a/source/blender/editors/asset/ED_asset_shelf.h b/source/blender/editors/asset/ED_asset_shelf.h new file mode 100644 index 00000000000..5d5a483ef0b --- /dev/null +++ b/source/blender/editors/asset/ED_asset_shelf.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/** \file + * \ingroup edasset + */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +struct ARegionType; +struct bContext; +struct wmWindowManager; + +void ED_region_asset_shelf_footer_init(struct wmWindowManager *wm, struct ARegion *region); +void ED_region_asset_shelf_footer(const struct bContext *C, struct ARegion *region); + +void ED_region_asset_shelf_listen(const struct wmRegionListenerParams *params); + +void ED_asset_shelf_footer_register(struct ARegionType *region_type, + const char *idname, + const int space_type); + +#ifdef __cplusplus +} +#endif diff --git a/source/blender/editors/asset/intern/asset_shelf.cc b/source/blender/editors/asset/intern/asset_shelf.cc new file mode 100644 index 00000000000..42396d5d435 --- /dev/null +++ b/source/blender/editors/asset/intern/asset_shelf.cc @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/** \file + * \ingroup edasset + */ + +#include "BKE_screen.h" + +#include "DNA_screen_types.h" + +#include "ED_asset_list.h" +#include "ED_screen.h" + +#include "UI_interface.h" +#include "UI_resources.h" + +#include "ED_asset_shelf.h" + +static void asset_shelf_draw(const bContext * /*C*/, Header *header) +{ + uiLayout *layout = header->layout; + uiItemL(layout, "Fooo\n", ICON_ASSET_MANAGER); +} + +void ED_region_asset_shelf_listen(const wmRegionListenerParams *params) +{ + if (ED_assetlist_listen(params->notifier)) { + ED_region_tag_redraw_no_rebuild(params->region); + } +} + +void ED_region_asset_shelf_footer_init(wmWindowManager * /*wm*/, ARegion *region) +{ + ED_region_header_init(region); +} + +void ED_region_asset_shelf_footer(const bContext *C, ARegion *region) +{ + ED_region_header(C, region); +} + +void ED_asset_shelf_footer_register(ARegionType *region_type, + const char *idname, + const int space_type) +{ + HeaderType *ht = MEM_cnew<HeaderType>(__func__); + strcpy(ht->idname, idname); + ht->space_type = space_type; + ht->region_type = RGN_TYPE_ASSET_SHELF_FOOTER; + ht->draw = asset_shelf_draw; + BLI_addtail(®ion_type->headertypes, ht); +} diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index a85acb500c3..b71fa39543c 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -122,8 +122,6 @@ void ED_region_header(const struct bContext *C, struct ARegion *region); void ED_region_header_layout(const struct bContext *C, struct ARegion *region); void ED_region_header_draw(const struct bContext *C, struct ARegion *region); -void ED_region_asset_shelf_listen(const struct wmRegionListenerParams *params); - void ED_region_cursor_set(struct wmWindow *win, struct ScrArea *area, struct ARegion *region); /** * Exported to all editors, uses fading default. @@ -703,6 +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), }; /** #SCREEN_OT_space_context_cycle direction. */ diff --git a/source/blender/editors/interface/interface_handlers.cc b/source/blender/editors/interface/interface_handlers.cc index 44a14f254c0..c9214bf2082 100644 --- a/source/blender/editors/interface/interface_handlers.cc +++ b/source/blender/editors/interface/interface_handlers.cc @@ -2085,7 +2085,8 @@ static bool ui_but_drag_init(bContext *C, RGN_TYPE_NAV_BAR, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER, - RGN_TYPE_FOOTER)) { + RGN_TYPE_FOOTER, + RGN_TYPE_ASSET_SHELF_FOOTER)) { const int region_alignment = RGN_ALIGN_ENUM_FROM_MASK(data->region->alignment); int lock_axis = -1; diff --git a/source/blender/editors/interface/resources.cc b/source/blender/editors/interface/resources.cc index 606f9d5a11f..dd0b5f5ae84 100644 --- a/source/blender/editors/interface/resources.cc +++ b/source/blender/editors/interface/resources.cc @@ -153,7 +153,10 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) { cp = ts->list; } - else if (ELEM(g_theme_state.regionid, RGN_TYPE_HEADER, RGN_TYPE_FOOTER)) { + else if (ELEM(g_theme_state.regionid, + RGN_TYPE_HEADER, + RGN_TYPE_FOOTER, + RGN_TYPE_ASSET_SHELF_FOOTER)) { cp = ts->header; } else if (g_theme_state.regionid == RGN_TYPE_NAV_BAR) { @@ -187,7 +190,10 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) { cp = ts->list_text; } - else if (ELEM(g_theme_state.regionid, RGN_TYPE_HEADER, RGN_TYPE_FOOTER)) { + else if (ELEM(g_theme_state.regionid, + RGN_TYPE_HEADER, + RGN_TYPE_FOOTER, + RGN_TYPE_ASSET_SHELF_FOOTER)) { cp = ts->header_text; } else { @@ -201,7 +207,10 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) { cp = ts->list_text_hi; } - else if (ELEM(g_theme_state.regionid, RGN_TYPE_HEADER, RGN_TYPE_FOOTER)) { + else if (ELEM(g_theme_state.regionid, + RGN_TYPE_HEADER, + RGN_TYPE_FOOTER, + RGN_TYPE_ASSET_SHELF_FOOTER)) { cp = ts->header_text_hi; } else { @@ -215,7 +224,10 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) { cp = ts->list_title; } - else if (ELEM(g_theme_state.regionid, RGN_TYPE_HEADER, RGN_TYPE_FOOTER)) { + else if (ELEM(g_theme_state.regionid, + RGN_TYPE_HEADER, + RGN_TYPE_FOOTER, + RGN_TYPE_ASSET_SHELF_FOOTER)) { cp = ts->header_title; } else { diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 33ccb91027b..3b6e25118e0 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1264,7 +1264,8 @@ bool ED_region_is_overlap(int spacetype, int regiontype) RGN_TYPE_TOOL_PROPS, RGN_TYPE_FOOTER, RGN_TYPE_TOOL_HEADER, - RGN_TYPE_ASSET_SHELF)) { + RGN_TYPE_ASSET_SHELF, + RGN_TYPE_ASSET_SHELF_FOOTER)) { return true; } } @@ -1339,6 +1340,9 @@ static void region_rect_recursive( else if (region->regiontype == RGN_TYPE_FOOTER) { prefsizey = ED_area_footersize(); } + else if (region->regiontype == RGN_TYPE_ASSET_SHELF_FOOTER) { + prefsizey = ED_area_footersize(); + } else if (ED_area_is_global(area @@ Diff output truncated at 10240 characters. @@ _______________________________________________ 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