[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18321] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Sun Jan 4 20:17:36 CET 2009


Revision: 18321
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18321
Author:   ton
Date:     2009-01-04 20:17:34 +0100 (Sun, 04 Jan 2009)

Log Message:
-----------
2.5

Small cleanup in region-based cursor handling. 
- callback was in spacetype, now in regiontype
- made screen listener catch ND_MODE notifier and 
  call the active region cursor callback, if it's there.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/space_text/space_text.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h	2009-01-04 19:16:13 UTC (rev 18320)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_screen.h	2009-01-04 19:17:34 UTC (rev 18321)
@@ -75,8 +75,6 @@
 	void		(*operatortypes)(void);
 	/* add default items to WM keymap */
 	void		(*keymap)(struct wmWindowManager *);
-	/* sets default cursor per region */
-	void		(*cursor)(struct wmWindow *win, struct ARegion *ar);
 
 	/* return context data */
 	int			(*context)(const struct bContext *, const void *, struct bContextDataResult *);
@@ -111,7 +109,9 @@
 	void		(*operatortypes)(void);
 	/* add own items to keymap */
 	void		(*keymap)(struct wmWindowManager *);
-	
+	/* allows default cursor per region */
+	void		(*cursor)(struct wmWindow *, struct ScrArea *, struct ARegion *ar);
+
 	/* return context data */
 	int			(*context)(const struct bContext *, const void *, struct bContextDataResult *);
 

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2009-01-04 19:16:13 UTC (rev 18320)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2009-01-04 19:17:34 UTC (rev 18321)
@@ -907,6 +907,24 @@
 	return newsc;
 }
 
+/* screen sets cursor based on swinid */
+static void region_cursor_set(wmWindow *win, int swinid)
+{
+	ScrArea *sa= win->screen->areabase.first;
+	
+	for(;sa; sa= sa->next) {
+		ARegion *ar= sa->regionbase.first;
+		for(;ar; ar= ar->next) {
+			if(ar->swinid == swinid) {
+				if(ar->type && ar->type->cursor)
+					ar->type->cursor(win, sa, ar);
+				else
+					WM_cursor_set(win, CURSOR_STD);
+				return;
+			}
+		}
+	}
+}
 
 void ED_screen_do_listen(wmWindow *win, wmNotifier *note)
 {
@@ -919,6 +937,9 @@
 		case NC_SCREEN:
 			if(note->action==NA_EDITED)
 				win->screen->do_draw= win->screen->do_refresh= 1;
+		case NC_SCENE:
+			if(note->data==ND_MODE)
+				region_cursor_set(win, note->swinid);				
 			break;
 	}
 }
@@ -1145,18 +1166,7 @@
 			screen_cursor_set(win, event);
 		}
 		else if(oldswin!=scr->subwinactive) {
-			/* cursor space type switching */
-			for(sa= scr->areabase.first; sa; sa= sa->next) {
-				for(ar= sa->regionbase.first; ar; ar= ar->next) {
-					if(ar->swinid==scr->subwinactive) {
-						if(sa->type->cursor)
-							sa->type->cursor(win, ar);
-						else 
-							WM_cursor_set(win, CURSOR_STD);
-					}
-				}
-					
-			}
+			region_cursor_set(win, scr->subwinactive);
 		}
 	}
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_text/space_text.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_text/space_text.c	2009-01-04 19:16:13 UTC (rev 18320)
+++ branches/blender2.5/blender/source/blender/editors/space_text/space_text.c	2009-01-04 19:17:34 UTC (rev 18321)
@@ -157,12 +157,9 @@
 	
 }
 
-static void text_cursor(wmWindow *win, ARegion *ar)
+static void text_cursor(wmWindow *win, ScrArea *sa, ARegion *ar)
 {
-	if(ar->regiontype==RGN_TYPE_WINDOW)
-		WM_cursor_set(win, BC_TEXTEDITCURSOR);
-	else
-		WM_cursor_set(win, CURSOR_STD);
+	WM_cursor_set(win, BC_TEXTEDITCURSOR);
 }
 
 static void text_keymap(struct wmWindowManager *wm)
@@ -216,7 +213,6 @@
 	st->init= text_init;
 	st->duplicate= text_duplicate;
 	st->operatortypes= text_operatortypes;
-	st->cursor= text_cursor;
 	st->keymap= text_keymap;
 	
 	/* regions: main window */
@@ -226,6 +222,7 @@
 	art->draw= text_main_area_draw;
 	art->listener= text_main_area_listener;
 	art->keymapflag= ED_KEYMAP_VIEW2D;
+	art->cursor= text_cursor;
 
 	BLI_addhead(&st->regiontypes, art);
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c	2009-01-04 19:16:13 UTC (rev 18320)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c	2009-01-04 19:17:34 UTC (rev 18321)
@@ -271,6 +271,19 @@
 	}
 }
 
+/* concept is to retrieve cursor type context-less */
+static void view3d_main_area_cursor(wmWindow *win, ScrArea *sa, ARegion *ar)
+{
+	Scene *scene= win->screen->scene;
+
+	if(scene->obedit) {
+		WM_cursor_set(win, CURSOR_EDIT);
+	}
+	else {
+		WM_cursor_set(win, CURSOR_STD);
+	}
+}
+
 /* add handlers, stuff you only do once or on area/region changes */
 static void view3d_header_area_init(wmWindowManager *wm, ARegion *ar)
 {
@@ -391,6 +404,7 @@
 	art->draw= view3d_main_area_draw;
 	art->init= view3d_main_area_init;
 	art->listener= view3d_main_area_listener;
+	art->cursor= view3d_main_area_cursor;
 	BLI_addhead(&st->regiontypes, art);
 	
 	/* regions: header */

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-01-04 19:16:13 UTC (rev 18320)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-01-04 19:17:34 UTC (rev 18321)
@@ -867,7 +867,7 @@
 				
 				/* XXX to solve, here screen handlers? */
 				if(!wm_event_always_pass(event))
-					ED_screen_set_subwinactive(win, event);	/* state variables in screen */
+					ED_screen_set_subwinactive(win, event);	/* state variables in screen, cursors */
 				
 				for(sa= win->screen->areabase.first; sa; sa= sa->next) {
 					if(wm_event_always_pass(event) || wm_event_prev_inside_i(event, &sa->totrct)) {





More information about the Bf-blender-cvs mailing list