[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35356] trunk/blender/source/blender: Bugfix #26270
Ton Roosendaal
ton at blender.org
Fri Mar 4 19:39:59 CET 2011
Revision: 35356
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35356
Author: ton
Date: 2011-03-04 18:39:58 +0000 (Fri, 04 Mar 2011)
Log Message:
-----------
Bugfix #26270
Transform started with button in Toolbar was drawing the helper
line badly.
This needed two fixes:
- helper line now has poll() callback to check for correct region
- event system needs to set 'subwinactive' for modal handlers too
The latter might fix issues with cursor/overlay drawing in other
cases?
Modified Paths:
--------------
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2011-03-04 17:01:33 UTC (rev 35355)
+++ trunk/blender/source/blender/editors/transform/transform.c 2011-03-04 18:39:58 UTC (rev 35356)
@@ -1243,6 +1243,15 @@
glEnd();
}
+static int helpline_poll(bContext *C)
+{
+ ARegion *ar= CTX_wm_region(C);
+
+ if(ar && ar->regiontype==RGN_TYPE_WINDOW)
+ return 1;
+ return 0;
+}
+
static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
{
TransInfo *t = (TransInfo*)customdata;
@@ -1557,7 +1566,7 @@
t->draw_handle_apply = ED_region_draw_cb_activate(t->ar->type, drawTransformApply, t, REGION_DRAW_PRE_VIEW);
t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
//t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
- t->draw_handle_cursor = WM_paint_cursor_activate(CTX_wm_manager(C), NULL, drawHelpline, t);
+ t->draw_handle_cursor = WM_paint_cursor_activate(CTX_wm_manager(C), helpline_poll, drawHelpline, t);
}
else if(t->spacetype == SPACE_IMAGE) {
unit_m3(t->spacemtx);
Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2011-03-04 17:01:33 UTC (rev 35355)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2011-03-04 18:39:58 UTC (rev 35356)
@@ -1622,6 +1622,7 @@
if(wm->paintcursors.first) {
ARegion *ar= CTX_wm_region(C);
+
if(ar)
wm_paintcursor_tag(C, wm->paintcursors.first, ar);
@@ -1734,6 +1735,14 @@
CTX_wm_area_set(C, area_event_inside(C, event->x, event->y));
CTX_wm_region_set(C, region_event_inside(C, event->x, event->y));
+ /* XXX to solve, here screen handlers? */
+ if(event->type==MOUSEMOVE) {
+ /* state variables in screen, cursors, also used in wm_draw.c */
+ ED_screen_set_subwinactive(win, event);
+ /* for regions having custom cursors */
+ wm_paintcursor_test(C, event);
+ }
+
/* MVC demands to not draw in event handlers... but we need to leave it for ogl selecting etc */
wm_window_make_drawable(C, win);
@@ -1754,15 +1763,7 @@
ScrArea *sa;
ARegion *ar;
int doit= 0;
-
- /* XXX to solve, here screen handlers? */
- if(event->type==MOUSEMOVE) {
- /* state variables in screen, cursors */
- ED_screen_set_subwinactive(win, event);
- /* for regions having custom cursors */
- wm_paintcursor_test(C, event);
- }
-
+
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
if(wm_event_inside_i(event, &sa->totrct)) {
CTX_wm_area_set(C, sa);
More information about the Bf-blender-cvs
mailing list