diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-11-15 23:13:40 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-11-15 23:14:47 +0300 |
commit | 603b867588f7940378950fefaffc9dfe0c67c2c7 (patch) | |
tree | 6caf12570d6f04cd6e57157e5589b97d9677cafa /source/blender/editors/space_image/image_edit.c | |
parent | 0d267737e23ba7032377a1aa2884d40a14025a39 (diff) |
UI: support cycling for image space menus
also remove arrow buttons.
Diffstat (limited to 'source/blender/editors/space_image/image_edit.c')
-rw-r--r-- | source/blender/editors/space_image/image_edit.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/source/blender/editors/space_image/image_edit.c b/source/blender/editors/space_image/image_edit.c index 38c9604d14b..35834857423 100644 --- a/source/blender/editors/space_image/image_edit.c +++ b/source/blender/editors/space_image/image_edit.c @@ -291,6 +291,34 @@ void ED_image_point_pos__reverse(SpaceImage *sima, ARegion *ar, const float co[2 r_co[1] = (co[1] * height * zoomy) + (float)sy; } +/** + * This is more a user-level functionality, for going to next/prev used slot, + * Stepping onto the last unused slot too. + */ +bool ED_image_slot_cycle(struct Image *image, int direction) +{ + const int cur = image->render_slot; + int i, slot; + + BLI_assert(ELEM(direction, -1, 1)); + + for (i = 1; i < IMA_MAX_RENDER_SLOT; i++) { + slot = (cur + ((direction == -1) ? -i : i)) % IMA_MAX_RENDER_SLOT; + if (slot < 0) slot += IMA_MAX_RENDER_SLOT; + + if (image->renders[slot] || slot == image->last_render_slot) { + image->render_slot = slot; + break; + } + } + + if (i == IMA_MAX_RENDER_SLOT) { + image->render_slot = ((cur == 1) ? 0 : 1); + } + + return (cur != image->render_slot); +} + void ED_space_image_scopes_update(const struct bContext *C, struct SpaceImage *sima, struct ImBuf *ibuf, bool use_view_settings) { Scene *scene = CTX_data_scene(C); |