[Bf-blender-cvs] [38e270ae30d] master: Cleanup: Move wm_dragdrop.c to C++

Hans Goudey noreply at git.blender.org
Wed Jul 27 06:16:25 CEST 2022


Commit: 38e270ae30d97a171e72af0359d34d19a647489d
Author: Hans Goudey
Date:   Tue Jul 26 23:12:06 2022 -0500
Branches: master
https://developer.blender.org/rB38e270ae30d97a171e72af0359d34d19a647489d

Cleanup: Move wm_dragdrop.c to C++

===================================================================

M	source/blender/makesdna/DNA_space_types.h
M	source/blender/windowmanager/CMakeLists.txt
R090	source/blender/windowmanager/intern/wm_dragdrop.c	source/blender/windowmanager/intern/wm_dragdrop.cc
M	source/blender/windowmanager/intern/wm_event_system.cc

===================================================================

diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 6bc68baa640..1ea6fbbaf83 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -8,6 +8,8 @@
 
 #pragma once
 
+#include "BLI_utildefines.h"
+
 #include "DNA_asset_types.h"
 #include "DNA_color_types.h" /* for Histogram */
 #include "DNA_defs.h"
@@ -1028,6 +1030,7 @@ typedef enum eFileSel_Params_Flag {
   /** Enables filtering by asset catalog. */
   FILE_FILTER_ASSET_CATALOG = (1 << 15),
 } eFileSel_Params_Flag;
+ENUM_OPERATORS(eFileSel_Params_Flag, FILE_FILTER_ASSET_CATALOG);
 
 typedef enum eFileSel_Params_AssetCatalogVisibility {
   FILE_SHOW_ASSETS_ALL_CATALOGS,
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt
index 4c553d0edfe..7a36020cea5 100644
--- a/source/blender/windowmanager/CMakeLists.txt
+++ b/source/blender/windowmanager/CMakeLists.txt
@@ -36,7 +36,7 @@ set(INC
 set(SRC
   intern/wm.c
   intern/wm_cursors.c
-  intern/wm_dragdrop.c
+  intern/wm_dragdrop.cc
   intern/wm_draw.c
   intern/wm_event_query.c
   intern/wm_event_system.cc
diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.cc
similarity index 90%
rename from source/blender/windowmanager/intern/wm_dragdrop.c
rename to source/blender/windowmanager/intern/wm_dragdrop.cc
index 36bd69a9b25..fa8cc842037 100644
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.cc
@@ -7,7 +7,7 @@
  * Our own drag-and-drop, drag state and drop boxes.
  */
 
-#include <string.h>
+#include <cstring>
 
 #include "DNA_screen_types.h"
 #include "DNA_space_types.h"
@@ -57,7 +57,7 @@
 
 /* ****************************************************** */
 
-static ListBase dropboxes = {NULL, NULL};
+static ListBase dropboxes = {nullptr, nullptr};
 
 static void wm_drag_free_asset_data(wmDragAsset **asset_data);
 
@@ -65,14 +65,13 @@ static void wm_drag_free_asset_data(wmDragAsset **asset_data);
 /* these are part of blender's UI/space specs, and not like keymaps */
 /* when editors become configurable, they can add own dropbox definitions */
 
-typedef struct wmDropBoxMap {
+struct wmDropBoxMap {
   struct wmDropBoxMap *next, *prev;
 
   ListBase dropboxes;
   short spaceid, regionid;
   char idname[KMAP_MAX_NAME];
-
-} wmDropBoxMap;
+};
 
 ListBase *WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
 {
@@ -84,7 +83,7 @@ ListBase *WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
     }
   }
 
-  wmDropBoxMap *dm = MEM_callocN(sizeof(struct wmDropBoxMap), "dropmap list");
+  wmDropBoxMap *dm = MEM_cnew<wmDropBoxMap>(__func__);
   BLI_strncpy(dm->idname, idname, KMAP_MAX_NAME);
   dm->spaceid = spaceid;
   dm->regionid = regionid;
@@ -97,20 +96,20 @@ wmDropBox *WM_dropbox_add(ListBase *lb,
                           const char *idname,
                           bool (*poll)(bContext *, wmDrag *, const wmEvent *),
                           void (*copy)(bContext *, wmDrag *, wmDropBox *),
-                          void (*cancel)(struct Main *, wmDrag *, wmDropBox *),
+                          void (*cancel)(Main *, wmDrag *, wmDropBox *),
                           WMDropboxTooltipFunc tooltip)
 {
-  wmDropBox *drop = MEM_callocN(sizeof(wmDropBox), "wmDropBox");
+  wmDropBox *drop = MEM_cnew<wmDropBox>(__func__);
   drop->poll = poll;
   drop->copy = copy;
   drop->cancel = cancel;
   drop->tooltip = tooltip;
-  drop->ot = WM_operatortype_find(idname, 0);
+  drop->ot = WM_operatortype_find(idname, false);
 
-  if (drop->ot == NULL) {
+  if (drop->ot == nullptr) {
     MEM_freeN(drop);
     printf("Error: dropbox with unknown operator: %s\n", idname);
-    return NULL;
+    return nullptr;
   }
   WM_operator_properties_alloc(&(drop->ptr), &(drop->properties), idname);
 
@@ -170,25 +169,25 @@ static void wm_dropbox_invoke(bContext *C, wmDrag *drag)
       if (drop->on_drag_start) {
         drop->on_drag_start(C, drag);
       }
-      CTX_store_set(C, NULL);
+      CTX_store_set(C, nullptr);
     }
   }
 }
 
 wmDrag *WM_drag_data_create(
-    struct bContext *C, int icon, int type, void *poin, double value, unsigned int flags)
+    bContext *C, int icon, int type, void *poin, double value, unsigned int flags)
 {
-  wmDrag *drag = MEM_callocN(sizeof(struct wmDrag), "new drag");
+  wmDrag *drag = MEM_cnew<wmDrag>(__func__);
 
   /* Keep track of future multi-touch drag too, add a mouse-pointer id or so. */
   /* if multiple drags are added, they're drawn as list */
 
-  drag->flags = flags;
+  drag->flags = static_cast<eWM_DragFlags>(flags);
   drag->icon = icon;
   drag->type = type;
   switch (type) {
     case WM_DRAG_PATH:
-      BLI_strncpy(drag->path, poin, FILE_MAX);
+      BLI_strncpy(drag->path, static_cast<const char *>(poin), FILE_MAX);
       /* As the path is being copied, free it immediately as `drag` won't "own" the data. */
       if (flags & WM_DRAG_FREE_DATA) {
         MEM_freeN(poin);
@@ -196,7 +195,7 @@ wmDrag *WM_drag_data_create(
       break;
     case WM_DRAG_ID:
       if (poin) {
-        WM_drag_add_local_ID(drag, poin, NULL);
+        WM_drag_add_local_ID(drag, static_cast<ID *>(poin), nullptr);
       }
       break;
     case WM_DRAG_ASSET:
@@ -211,7 +210,7 @@ wmDrag *WM_drag_data_create(
       const AssetLibraryReference *asset_library = CTX_wm_asset_library_ref(C);
       ListBase asset_file_links = CTX_data_collection_get(C, "selected_asset_files");
       LISTBASE_FOREACH (const CollectionPointerLink *, link, &asset_file_links) {
-        const FileDirEntry *asset_file = link->ptr.data;
+        const FileDirEntry *asset_file = static_cast<const FileDirEntry *>(link->ptr.data);
         const AssetHandle asset_handle = {asset_file};
         WM_drag_add_asset_list_item(drag, C, asset_library, &asset_handle);
       }
@@ -236,7 +235,7 @@ void WM_event_start_prepared_drag(bContext *C, wmDrag *drag)
 }
 
 void WM_event_start_drag(
-    struct bContext *C, int icon, int type, void *poin, double value, unsigned int flags)
+    bContext *C, int icon, int type, void *poin, double value, unsigned int flags)
 {
   wmDrag *drag = WM_drag_data_create(C, icon, type, poin, value, flags);
   WM_event_start_prepared_drag(C, drag);
@@ -266,12 +265,12 @@ static bContextStore *wm_drop_ui_context_create(const bContext *C)
 {
   uiBut *active_but = UI_region_active_but_get(CTX_wm_region(C));
   if (!active_but) {
-    return NULL;
+    return nullptr;
   }
 
   bContextStore *but_context = UI_but_context_get(active_but);
   if (!but_context) {
-    return NULL;
+    return nullptr;
   }
 
   return CTX_store_copy(but_context);
@@ -283,7 +282,7 @@ static void wm_drop_ui_context_free(bContextStore **context_store)
     return;
   }
   CTX_store_free(*context_store);
-  *context_store = NULL;
+  *context_store = nullptr;
 }
 
 void WM_event_drag_image(wmDrag *drag, ImBuf *imb, float scale)
@@ -294,14 +293,14 @@ void WM_event_drag_image(wmDrag *drag, ImBuf *imb, float scale)
 
 void WM_drag_data_free(int dragtype, void *poin)
 {
-  /* Don't require all the callers to have a NULL-check, just allow passing NULL. */
+  /* Don't require all the callers to have a nullptr-check, just allow passing nullptr. */
   if (!poin) {
     return;
   }
 
   /* Not too nice, could become a callback. */
   if (dragtype == WM_DRAG_ASSET) {
-    wmDragAsset *asset_data = poin;
+    wmDragAsset *asset_data = static_cast<wmDragAsset *>(poin);
     wm_drag_free_asset_data(&asset_data);
   }
   else {
@@ -331,17 +330,17 @@ void WM_drag_free(wmDrag *drag)
   MEM_freeN(drag);
 }
 
-void WM_drag_free_list(struct ListBase *lb)
+void WM_drag_free_list(ListBase *lb)
 {
   wmDrag *drag;
-  while ((drag = BLI_pophead(lb))) {
+  while ((drag = static_cast<wmDrag *>(BLI_pophead(lb)))) {
     WM_drag_free(drag);
   }
 }
 
 static char *dropbox_tooltip(bContext *C, wmDrag *drag, const int xy[2], wmDropBox *drop)
 {
-  char *tooltip = NULL;
+  char *tooltip = nullptr;
   if (drop->tooltip) {
     tooltip = drop->tooltip(C, drag, xy, drop);
   }
@@ -361,7 +360,7 @@ static wmDropBox *dropbox_active(bContext *C,
   if (drag->drop_state.free_disabled_info) {
     MEM_SAFE_FREE(drag->drop_state.disabled_info);
   }
-  drag->drop_state.disabled_info = NULL;
+  drag->drop_state.disabled_info = nullptr;
 
   LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
     if (handler_base->type == WM_HANDLER_TYPE_DROPBOX) {
@@ -381,7 +380,7 @@ static wmDropBox *dropbox_active(bContext *C,
 
           const wmOperatorCallContext opcontext = wm_drop_operator_context_get(drop);
           if (WM_operator_poll_context(C, drop->ot, opcontext)) {
-            CTX_store_set(C, NULL);
+            CTX_store_set(C, nullptr);
             return drop;
           }
 
@@ -397,8 +396,8 @@ static wmDropBox *dropbox_active(bContext *C,
       }
     }
   }
-  CTX_store_set(C, NULL);
-  return NULL;
+  CTX_store_set(C, nullptr);
+  return nullptr;
 }
 
 /* return active operator tooltip/name when mouse is in box */
@@ -441,14 +440,14 @@ static void wm_drop_update_active(bContext *C, wmDrag *drag, const wmEvent *even
   if (drop != drop_prev) {
     if (drop_prev && drop_prev->draw_deactivate) {
       drop_prev->draw_deactivate(drop_prev, drag);
-      BLI_assert(drop_prev->draw_data == NULL);
+      BLI_assert(drop_prev->draw_data == nullptr);
     }
     if (drop && drop->draw_activate) {
       drop->draw_activate(drop, drag);
     }
     drag->drop_state.active_dropbox = drop;
-    drag->drop_state.area_from = drop ? CTX_wm_area(C) : NULL;
-    drag->drop_state.region_from = drop ? CTX_wm_region(C) : NULL;
+    drag->drop_state.area_from = drop ? CTX_wm_area(C) : nullptr;
+    drag->drop_state.region_from = drop ? CTX_wm_region(C) : nullptr;
   }
 
   if (!drag->drop_state.active_dropbox) {
@@ -476,7 +475,7 @@ void wm_drop_prepare(bContext *C, wmDrag *drag, wmDropBox *drop)
 
 void wm_drop_end(bContext *C, wmDrag *UNUSED(drag), wmDropBox *UNUSED(drop))
 {
-  CTX_store_set(C, NULL);
+  CTX_store_set(C, nullptr);
 }
 
 void wm_drags_check_ops(bContext *C, const wmEvent *event)
@@ -511,7 +510,7 @@ void

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list