diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-30 16:22:02 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-30 16:22:02 +0400 |
commit | 54223ed05b7e2840865b5e46ed6d43573ff2b4ae (patch) | |
tree | 318ecb1a6b2afa8278829f06dfb0a50c0de06b36 /source/blender/blenkernel | |
parent | c8015a27888a4c87360b1af158fc9b70bd4112ae (diff) |
Add active region for operator execution.
This means you can for example, uv unwrap in quad-view and change settings in the toolbar without defaulting back to the first quad-view region available.
This may be displayed to the user later, for now this is set on executing registrable operators.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_screen.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/screen.c | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h index 3c6f886b59a..629acab9e34 100644 --- a/source/blender/blenkernel/BKE_screen.h +++ b/source/blender/blenkernel/BKE_screen.h @@ -261,6 +261,7 @@ void BKE_area_region_free(struct SpaceType *st, struct ARegion *ar); void BKE_screen_area_free(struct ScrArea *sa); struct ARegion *BKE_area_find_region_type(struct ScrArea *sa, int type); +struct ARegion *BKE_area_find_region_active_win(struct ScrArea *sa); struct ScrArea *BKE_screen_find_big_area(struct bScreen *sc, const int spacetype, const short min); void BKE_screen_view3d_sync(struct View3D *v3d, struct Scene *scene); diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index 95b72d0185c..01f57b95378 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -355,6 +355,20 @@ ARegion *BKE_area_find_region_type(ScrArea *sa, int type) return NULL; } +ARegion *BKE_area_find_region_active_win(ScrArea *sa) +{ + if (sa) { + ARegion *ar = BLI_findlink(&sa->regionbase, sa->region_active_win); + if (ar && (ar->regiontype == RGN_TYPE_WINDOW)) { + return ar; + } + + /* fallback to any */ + return BKE_area_find_region_type(sa, RGN_TYPE_WINDOW); + } + return NULL; +} + /* note, using this function is generally a last resort, you really want to be * using the context when you can - campbell * -1 for any type */ |