[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