[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(&region_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