[Bf-blender-cvs] [ce4a1a9] temp_widgets_c++_experiment: Bunch of changes - Blender works again \o/
Julian Eisel
noreply at git.blender.org
Mon Dec 21 17:28:47 CET 2015
Commit: ce4a1a9dcd2a5fe844f989784d7b409407a77523
Author: Julian Eisel
Date: Mon Dec 21 17:25:18 2015 +0100
Branches: temp_widgets_c++_experiment
https://developer.blender.org/rBce4a1a9dcd2a5fe844f989784d7b409407a77523
Bunch of changes - Blender works again \o/
Changes include: More porting, fixes, cleanup
===================================================================
M source/blender/blenkernel/intern/screen.c
M source/blender/blenlib/BLI_listbase.h
M source/blender/blenlib/intern/listbase.c
M source/blender/editors/object/object_edit.c
M source/blender/editors/space_graph/graph_edit.c
M source/blender/editors/space_node/space_node.c
M source/blender/editors/space_sequencer/sequencer_view.c
M source/blender/editors/space_view3d/space_view3d.c
M source/blender/makesdna/DNA_widget_types.h
M source/blender/makesrna/intern/rna_wm.c
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/WM_types.h
M source/blender/windowmanager/intern/widgets/wm_widgetgroup.cc
M source/blender/windowmanager/intern/widgets/wm_widgetgrouptype.cc
M source/blender/windowmanager/intern/widgets/wm_widgetgrouptype.h
M source/blender/windowmanager/intern/widgets/wm_widgetmap.cc
M source/blender/windowmanager/intern/widgets/wm_widgetmap.h
M source/blender/windowmanager/intern/widgets/wm_widgetmaptype.cc
M source/blender/windowmanager/intern/widgets/wm_widgetmaptype.h
M source/blender/windowmanager/intern/widgets/wm_widgets_c_api.cc
M source/blender/windowmanager/intern/widgets/wm_widgets_c_api.h
M source/blender/windowmanager/intern/wm_event_system.c
M source/blender/windowmanager/intern/wm_widgets.c
M source/blender/windowmanager/wm_event_system.h
M source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index b0a3edc..27621d9 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -295,7 +295,6 @@ void BKE_spacedata_id_unref(struct SpaceLink *sl, const struct ID *id)
void BKE_area_region_free(SpaceType *st, ARegion *ar)
{
uiList *uilst;
- struct wmWidgetMapC *wmap, *wmap_tmp;
if (st) {
ARegionType *art = BKE_regiontype_from_id(st, ar->regiontype);
@@ -341,11 +340,8 @@ void BKE_area_region_free(SpaceType *st, ARegion *ar)
MEM_freeN(uilst->properties);
}
}
-
- for (wmap = ar->widgetmaps.first; wmap; wmap = wmap_tmp) {
- wmap_tmp = wmap->next;
- WM_widgetmap_delete(wmap);
- }
+
+ WM_widgetmaps_delete(&ar->widgetmaps);
BLI_listbase_clear(&ar->widgetmaps);
BLI_freelistN(&ar->ui_lists);
BLI_freelistN(&ar->ui_previews);
diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h
index 9dfa800..98a9627 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -92,6 +92,8 @@ BLI_INLINE void BLI_listbase_clear(struct ListBase *lb) { lb->first = lb->last =
/* create a generic list node containing link to provided data */
struct LinkData *BLI_genericNodeN(void *data);
+extern const ListBase ListBase_NULL;
+
/**
* Does a full loop on the list, with any value acting as first
* (handy for cycling items)
diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c
index ebee2c7..c3afdfa 100644
--- a/source/blender/blenlib/intern/listbase.c
+++ b/source/blender/blenlib/intern/listbase.c
@@ -44,6 +44,9 @@
#include "BLI_strict_flags.h"
+const ListBase ListBase_NULL = {NULL, NULL};
+
+
/* implementation */
/**
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 6a2a382..1bfe2b6 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -2139,9 +2139,9 @@ static int WIDGETGROUP_object_manipulator_poll(const struct bContext *C, struct
Object *ob = ED_object_active_context((bContext *)C);
if (ED_operator_object_active((bContext *)C)) {
- char *idname = NULL;
- WM_widgetgrouptype_idname_get(wgrouptype, idname);
+ char idname[MAX_NAME];
+ WM_widgetgrouptype_idname_get(wgrouptype, idname);
if (STREQ(idname, ob->id.name)) {
return true;
}
@@ -2159,9 +2159,7 @@ static int object_widget_add_exec(bContext *C, wmOperator *UNUSED(op))
SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
/* assign the objects id name to the widget */
- char *idname = NULL;
- WM_widgetgrouptype_idname_get(wgrouptype, idname);
- strcpy(idname, ob->id.name);
+ WM_widgetgrouptype_idname_set(wgrouptype, ob->id.name);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index be272b2..8047c47 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -2610,7 +2610,7 @@ static int graph_widget_backdrop_transform_poll(bContext *C)
static void widgetgroup_backdrop_create(const struct bContext *C, struct wmWidgetGroup *wgroup)
{
ARegion *ar = CTX_wm_region(C);
- wmOperator *op = wgroup->type->op;
+ wmOperator *op = WM_widgetgrouptype_operator_get(wgroup->type);
Scene *scene = CTX_data_scene(C);
int width = (scene->r.size * scene->r.xsch) / 150.0f;
int height = (scene->r.size * scene->r.ysch) / 150.0f;
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 1754ad6..ef20419 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -652,7 +652,7 @@ static void node_main_region_init(wmWindowManager *wm, ARegion *ar)
BLI_addhead(&ar->widgetmaps, WM_widgetmap_new("Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW, false));
}
- WM_event_add_area_widgetmap_handlers(ar);
+ WM_widgetmaps_create_region_handlers(ar);
/* own keymaps */
keymap = WM_keymap_find(wm->defaultconf, "Node Generic", SPACE_NODE, 0);
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c b/source/blender/editors/space_sequencer/sequencer_view.c
index fec9d09..dfb513c 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -269,7 +269,7 @@ static int sequencer_overdrop_transform_poll(bContext *C)
static void widgetgroup_overdrop_create(const struct bContext *C, struct wmWidgetGroup *wgroup)
{
ARegion *ar = CTX_wm_region(C);
- wmOperator *op = wgroup->type->op;
+ wmOperator *op = WM_widgetgrouptype_operator_get(wgroup->type);
Scene *sce = CTX_data_scene(C);
int sizex = (sce->r.size * sce->r.xsch) / 100;
int sizey = (sce->r.size * sce->r.ysch) / 100;
@@ -433,7 +433,7 @@ static void widgetgroup_image_transform_create(const struct bContext *C, struct
{
ARegion *ar = CTX_wm_region(C);
View2D *v2d = &ar->v2d;
- wmOperator *op = wgroup->type->op;
+ wmOperator *op = WM_widgetgrouptype_operator_get(wgroup->type);
wmWidget *cage;
float origin[3];
float viewrect[2];
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 5c4e206..a6f00c3 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -504,7 +504,7 @@ static void view3d_main_region_init(wmWindowManager *wm, ARegion *ar)
BLI_addhead(&ar->widgetmaps, WM_widgetmap_new("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true));
}
- WM_event_add_area_widgetmap_handlers(ar);
+ WM_widgetmaps_create_region_handlers(ar);
/* object ops. */
diff --git a/source/blender/makesdna/DNA_widget_types.h b/source/blender/makesdna/DNA_widget_types.h
index 13fce0a..5fa2cd8 100644
--- a/source/blender/makesdna/DNA_widget_types.h
+++ b/source/blender/makesdna/DNA_widget_types.h
@@ -47,8 +47,7 @@ typedef enum WidgetType {
struct wmWidgetGroup {
struct wmWidgetGroup *next, *prev;
- struct wmWidgetGroupTypeC *type;
- struct wmWidgetGroupType *type_cxx;
+ struct wmWidgetGroupType *type;
ListBase widgets;
void *py_instance; /* python stores the class instance here */
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index dd52ce7..ac22bcd 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -1533,7 +1533,7 @@ static StructRNA *rna_WidgetGroup_register(Main *bmain, ReportList *reports, voi
int have_function[2];
/* setup dummy widgetgroup & widgetgroup type to store static properties in */
- dummywg.type_cxx = &dummywgt;
+ dummywg.type = &dummywgt;
RNA_pointer_create(NULL, &RNA_WidgetGroup, &dummywg, &wgptr);
/* clear in case they are left unset */
@@ -1891,6 +1891,8 @@ static void rna_def_widgetgroup(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Has Reports",
"WidgetGroup has a set of reports (warnings and errors) from last execution");
+#ifdef USE_WM_WIDGET_API
+
/* Registration */
prop = RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "type->idname");
@@ -1918,6 +1920,8 @@ static void rna_def_widgetgroup(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Options", "Options for this operator type");
#endif
+#endif /* USE_WM_WIDGET_API */
+
prop = RNA_def_property(srna, "widgets", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "widgets", NULL);
RNA_def_property_struct_type(prop, "Widget");
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 90848b1..dc0d4cc 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -61,7 +61,6 @@ struct wmOperator;
struct wmWidget;
struct wmWidgetGroup;
struct wmWidgetMapC;
-struct wmWidgetGroupTypeC;
struct wmWidgetMapType;
struct rcti;
struct PointerRNA;
@@ -512,10 +511,6 @@ struct wmWidget *WM_widget_new(void (*draw)(const struct bContext *, struct wmWi
int (*intersect)(struct bContext *, const struct wmEvent *, struct wmWidget *),
int (*handler)(struct bContext *, const struct wmEvent *, struct wmWidget *, const int));
-void WM_event_add_area_widgetmap_handlers(struct ARegion *ar);
-void WM_modal_handler_attach_widgetgroup(struct bContext *C, struct wmEventHandler *handler,
- struct wmWidgetGroupTypeC *wgrouptype, struct wmOperator *op);
-
/* wmWidget->flag */
enum widgetflags {
/* states */
@@ -557,12 +552,6 @@ wmKeyMap *WM_widgetgroup_keymap_common(wmKeyConfig *config, const char *wgroupna
bool WM_widgetmap_select_all(struct bContext *C, struct wmWidgetMapC *wmap, const int action);
-/* creates a widgetmap with all registered widgets for that type */
-void WM_widgetmap_delete(struct wmWidgetMapC *wmap);
-bool WM_widgetmap_cursor_set(const struct wmWidgetMapC *wmap, struct wmWindow *win);
-
-void WM_widgetmaptypes_free(void);
-
/* wm_generic_widgets.c */
enum {
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 7b1acf2..4a217d6 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -679,43 +679,6 @@ typedef struct wmWidget wmWidget;
typedef struct wmWidgetGroup wmWidgetGroup;
typedef struct wmWidgetMapType wmWidgetMapType;
-/* factory class for a widgetgroup type, gets called every time a new area is spawned */
-typedef struct wmWidgetGroupTypeC {
- struct wmWidgetGroupTypeC *next, *prev;
-
- char idname[64]; /* MAX_NAME */
- char name[64]; /* widget group name - displayed in UI (keymap editor) */
-
- /* poll if widgetmap should be active */
- int (*poll)(const struct bContext *C, struct wmWidgetGroupTypeC *wgrouptype) ATTR_WARN_UNUSED_RESULT;
-
- /* update widgets, called right before drawing */
- void (*create)(const st
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list