diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-05-09 21:37:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-05-09 21:37:00 +0300 |
commit | dc82c2cd4817c6c84a4dd7e313eb2659a8830d59 (patch) | |
tree | dce4908aece61d8d03c0e6ea424e402919d99012 /source/blender/editors/space_view3d/view3d_edit.c | |
parent | 119230b565f10aeb13e7ee67ef5d75ec55015083 (diff) |
View selected support for grease-pencil
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_edit.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 9ee00d2413c..c7a10d65071 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -37,6 +37,7 @@ #include "DNA_curve_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "DNA_gpencil_types.h" #include "MEM_guardedalloc.h" @@ -74,6 +75,7 @@ #include "ED_screen.h" #include "ED_transform.h" #include "ED_mesh.h" +#include "ED_gpencil.h" #include "ED_view3d.h" #include "UI_resources.h" @@ -3019,6 +3021,8 @@ static int viewselected_exec(bContext *C, wmOperator *op) ARegion *ar = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); + bGPdata *gpd = CTX_data_gpencil_data(C); + const bool is_gp_edit = ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)); Object *ob = OBACT; Object *obedit = CTX_data_edit_object(C); float min[3], max[3]; @@ -3031,6 +3035,10 @@ static int viewselected_exec(bContext *C, wmOperator *op) INIT_MINMAX(min, max); + if (is_gp_edit) { + ob = NULL; + } + if (ob && (ob->mode & OB_MODE_WEIGHT_PAINT)) { /* hard-coded exception, we look for the one selected armature */ /* this is weak code this way, we should make a generic active/selection callback interface once... */ @@ -3047,7 +3055,19 @@ static int viewselected_exec(bContext *C, wmOperator *op) } - if (obedit) { + if (is_gp_edit) { + CTX_DATA_BEGIN(C, bGPDstroke *, gps, editable_gpencil_strokes) + { + /* we're only interested in selected points here... */ + if ((gps->flag & GP_STROKE_SELECT) && (gps->flag & GP_STROKE_3DSPACE)) { + if (ED_gpencil_stroke_minmax(gps, true, min, max)) { + ok = true; + } + } + } + CTX_DATA_END; + } + else if (obedit) { ok = ED_view3d_minmax_verts(obedit, min, max); /* only selected */ } else if (ob && (ob->mode & OB_MODE_POSE)) { |