[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