[Bf-blender-cvs] [6dcc3f0] wiggly-widgets: change widget code, area now just stores a pointer to the widget list corresponidng to it.
Antony Riakiotakis
noreply at git.blender.org
Wed Sep 24 19:09:19 CEST 2014
Commit: 6dcc3f0b918b1f9c82218e2b55602da8ae44f766
Author: Antony Riakiotakis
Date: Wed Sep 24 19:09:07 2014 +0200
Branches: wiggly-widgets
https://developer.blender.org/rB6dcc3f0b918b1f9c82218e2b55602da8ae44f766
change widget code, area now just stores a pointer to the widget list
corresponidng to it.
===================================================================
M source/blender/editors/space_view3d/space_view3d.c
M source/blender/makesdna/DNA_screen_types.h
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/intern/wm_widgets.c
===================================================================
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index d3b5ed6..b5a2139 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -390,7 +390,7 @@ static SpaceLink *view3d_new(const bContext *C)
rv3d->persp = RV3D_PERSP;
rv3d->view = RV3D_VIEW_PERSPORTHO;
rv3d->dist = 10.0;
-
+
return (SpaceLink *)v3d;
}
@@ -552,6 +552,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
WM_event_add_dropbox_handler(&ar->handlers, lb);
+ ar->widgets = WM_widgetmap_find("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW);
WM_widget_handler_register(ar);
}
diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h
index 801a9bf..339b747 100644
--- a/source/blender/makesdna/DNA_screen_types.h
+++ b/source/blender/makesdna/DNA_screen_types.h
@@ -257,7 +257,7 @@ typedef struct ARegion {
ListBase ui_lists; /* uiList */
ListBase ui_previews; /* uiPreview */
ListBase handlers; /* wmEventHandler */
- ListBase widgets; /* widgets for drawing */
+ ListBase *widgets; /* widgets for drawing */
ListBase panels_category; /* Panel categories runtime */
struct wmTimer *regiontimer; /* blend in/out */
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 3b0ed36..13e3009 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -472,8 +472,8 @@ void WM_widgets_delete(struct wmWidget *widget);
void WM_widgets_draw(const struct bContext *C, struct ARegion *ar);
void WM_widget_handler_register(struct ARegion *ar);
-void WM_widget_register(struct ARegion *ar, struct wmWidget *widget);
-void WM_widget_unregister(struct ARegion *ar, struct wmWidget *widget);
+void WM_widget_register(ListBase *widgetlist, struct wmWidget *widget);
+void WM_widget_unregister(ListBase *widgetlist, struct wmWidget *widget);
struct ListBase *WM_widgetmap_find(const char *idname, int spaceid, int regionid);
#ifdef __cplusplus
diff --git a/source/blender/windowmanager/intern/wm_widgets.c b/source/blender/windowmanager/intern/wm_widgets.c
index 399702f..f1e8255 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -133,10 +133,10 @@ void WM_widgets_delete(wmWidget *widget)
void WM_widgets_draw(const struct bContext *C, struct ARegion *ar)
{
- if (ar->widgets.first) {
+ if (ar->widgets->first) {
wmWidget *widget;
- for (widget = ar->widgets.first; widget; widget = widget->next) {
+ for (widget = ar->widgets->first; widget; widget = widget->next) {
if ((widget->draw || widget->draw_highlighted) &&
(widget->poll == NULL || widget->poll(C, widget->customdata)))
{
@@ -156,36 +156,28 @@ void WM_widget_handler_register(ARegion *ar)
wmEventHandler *handler;
for (handler = ar->handlers.first; handler; handler = handler->next)
- if (handler->widgets == &ar->widgets)
+ if (handler->widgets == ar->widgets)
return;
handler = MEM_callocN(sizeof(wmEventHandler), "widget handler");
- handler->widgets = &ar->widgets;
+ handler->widgets = ar->widgets;
BLI_addtail(&ar->handlers, handler);
}
-void WM_widget_register(ARegion *ar, wmWidget *widget)
+void WM_widget_register(ListBase *widgetlist, wmWidget *widget)
{
- BLI_addtail(&ar->widgets, widget);
+ BLI_addtail(widgetlist, widget);
}
-void WM_widget_unregister(ARegion *ar, wmWidget *widget)
+void WM_widget_unregister(ListBase *widgetlist, wmWidget *widget)
{
- wmEventHandler *handler;
wmWidget *widget_iter;
- for (handler = ar->handlers.first; handler; handler = handler->next) {
- if (handler->widgets == &ar->widgets) {
- BLI_remlink(&ar->handlers, handler);
- break;
- }
- }
-
- for (widget_iter = ar->widgets.first; widget_iter; widget_iter = widget_iter->next) {
+ for (widget_iter = widgetlist->first; widget_iter; widget_iter = widget_iter->next) {
if (widget_iter == widget) {
- BLI_remlink(&ar->widgets, widget);
+ BLI_remlink(widgetlist, widget);
}
}
}
More information about the Bf-blender-cvs
mailing list