[Bf-blender-cvs] [b3ee7ad2ccb] asset-shelf: Extend asset shelf region with a region for the catalogs & options
Julian Eisel
noreply at git.blender.org
Tue Jan 17 16:25:30 CET 2023
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. @@
More information about the Bf-blender-cvs
mailing list