[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58713] trunk/blender/source/blender: add api call for initializing events from the windows eventstate.

Campbell Barton ideasman42 at gmail.com
Mon Jul 29 10:29:04 CEST 2013


Revision: 58713
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58713
Author:   campbellbarton
Date:     2013-07-29 08:29:04 +0000 (Mon, 29 Jul 2013)
Log Message:
-----------
add api call for initializing events from the windows eventstate.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_node/node_select.c
    trunk/blender/source/blender/editors/space_outliner/outliner_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/interface/interface.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -3964,7 +3964,8 @@
 {
 	wmEvent event;
 	
-	event = *(win->eventstate);
+	wm_event_init_from_window(win, &event);
+
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -6193,7 +6193,7 @@
 	
 	button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
 	
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -649,7 +649,8 @@
 	
 	sad->modifier = RNA_int_get(op->ptr, "modifier");
 	
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
+
 	if (type == AZONE_AREA)
 		event.type = EVT_ACTIONZONE_AREA;
 	else

Modified: trunk/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_select.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/space_node/node_select.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -926,7 +926,7 @@
 	uiEndBlock(C, block);
 	
 	//	uiButActiveOnly(C, ar, block, but); XXX using this here makes Blender hang - investigate
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;

Modified: trunk/blender/source/blender/editors/space_outliner/outliner_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner_draw.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/space_outliner/outliner_draw.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -811,7 +811,7 @@
 	uiBlockSetDirection(block, UI_DOWN);
 	uiEndBlock(C, block);
 	
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -195,7 +195,7 @@
 	uiBlockSetDirection(block, UI_DOWN);
 	uiEndBlock(C, block);
 	
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2013-07-29 08:29:04 UTC (rev 58713)
@@ -187,7 +187,9 @@
 ;
 
 void		wm_event_add(struct wmWindow *win, const struct wmEvent *event_to_add);
+void		wm_event_init_from_window(struct wmWindow *win, struct wmEvent *event);
 
+
 			/* at maximum, every timestep seconds it triggers event_type events */
 struct wmTimer *WM_event_add_timer(struct wmWindowManager *wm, struct wmWindow *win, int event_type, double timestep);
 void		WM_event_remove_timer(struct wmWindowManager *wm, struct wmWindow *win, struct wmTimer *timer);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -132,6 +132,14 @@
 	}
 }
 
+void wm_event_init_from_window(wmWindow *win, wmEvent *event)
+{
+	/* make sure we don't copy any owned pointers */
+	BLI_assert(win->eventstate->tablet_data == NULL);
+
+	*event = *(win->eventstate);
+}
+
 /* ********************* notifiers, listeners *************** */
 
 static int wm_test_duplicate_notifier(wmWindowManager *wm, unsigned int type, void *reference)
@@ -445,7 +453,9 @@
 		nexthandler = handler->next;
 
 		if (handler->ui_handle) {
-			wmEvent event = *(win->eventstate);
+			wmEvent event;
+
+			wm_event_init_from_window(win, &event);
 			event.type = EVT_BUT_CANCEL;
 			handler->ui_handle(C, &event, handler->ui_userdata);
 		}

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -978,7 +978,7 @@
 	uiPopupBoundsBlock(block, 6, 0, -UI_UNIT_Y); /* move it downwards, mouse over button */
 	uiEndBlock(C, block);
 
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;
@@ -1751,7 +1751,7 @@
 	uiPopupBoundsBlock(block, 6, 0, -UI_UNIT_Y); /* move it downwards, mouse over button */
 	uiEndBlock(C, block);
 	
-	event = *(win->eventstate);  /* XXX huh huh? make api call */
+	wm_event_init_from_window(win, &event);
 	event.type = EVT_BUT_OPEN;
 	event.val = KM_PRESS;
 	event.customdata = but;
@@ -2988,7 +2988,7 @@
 			if ((val = wm_gesture_evaluate(gesture))) {
 				wmEvent tevent;
 
-				tevent = *(window->eventstate);
+				wm_event_init_from_window(window, &tevent);
 				if (gesture->event_type == LEFTMOUSE)
 					tevent.type = EVT_TWEAK_L;
 				else if (gesture->event_type == RIGHTMOUSE)

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-07-29 08:01:12 UTC (rev 58712)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-07-29 08:29:04 UTC (rev 58713)
@@ -808,7 +808,7 @@
 				 * currently it seems to be common practice to generate new event for, but probably
 				 * we'll need utility function for this? (sergey)
 				 */
-				event = *(win->eventstate);
+				wm_event_init_from_window(win, &event);
 				event.type = MOUSEMOVE;
 				event.prevx = event.x;
 				event.prevy = event.y;
@@ -957,7 +957,7 @@
 				win->eventstate->x = wx;
 				win->eventstate->y = wy;
 				
-				event = *(win->eventstate);  /* copy last state, like mouse coords */
+				wm_event_init_from_window(win, &event);  /* copy last state, like mouse coords */
 				
 				/* activate region */
 				event.type = MOUSEMOVE;
@@ -1065,7 +1065,8 @@
 				else if (wt->event_type == TIMERAUTOSAVE)
 					wm_autosave_timer(C, wm, wt);
 				else if (win) {
-					wmEvent event = *(win->eventstate);
+					wmEvent event;
+					wm_event_init_from_window(win, &event);
 					
 					event.type = wt->event_type;
 					event.val = 0;




More information about the Bf-blender-cvs mailing list