[Bf-blender-cvs] [a171fb4] GPencil_Editing_Stage3: GP EditMode: Some more fixes for editmode handling to resolve some annoying corner cases

Joshua Leung noreply at git.blender.org
Thu Oct 22 13:27:43 CEST 2015


Commit: a171fb4e3c2140c8823de3aa64b09236ab0ad6ef
Author: Joshua Leung
Date:   Fri Oct 23 00:21:12 2015 +1300
Branches: GPencil_Editing_Stage3
https://developer.blender.org/rBa171fb4e3c2140c8823de3aa64b09236ab0ad6ef

GP EditMode: Some more fixes for editmode handling to resolve some annoying corner cases

* Edit Strokes mode should only be available if there is actually a GP datablock
  and it is in editmode
* If exiting strokes editmode with the active object hidden, the flag would not get
  cleared, and it would appear that we were still in editmode.

===================================================================

M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/space_view3d/view3d_header.c

===================================================================

diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 4370e61..cf77956 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -86,9 +86,10 @@ static int gpencil_editmode_toggle_poll(bContext *C)
 
 static int gpencil_editmode_toggle_exec(bContext *C, wmOperator *op)
 {
-	ScrArea *sa = CTX_wm_area(C);
-	Object *ob = CTX_data_active_object(C);
 	bGPdata *gpd = ED_gpencil_data_get_active(C);
+	Scene *scene = CTX_data_scene(C);
+	Object *ob = OBACT;
+	ScrArea *sa = CTX_wm_area(C);
 	
 	/* Toggle editmode flag... */
 	if (gpd == NULL)
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index c687ee1..a565d55 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -305,13 +305,13 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
 	UI_block_emboss_set(block, UI_EMBOSS);
 	
 	/* mode */
-	if (ob) {
+	if ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)) {
+		modeselect = OB_MODE_GPENCIL;
+	}
+	else if (ob) {
 		modeselect = ob->mode;
 		is_paint = ELEM(ob->mode, OB_MODE_SCULPT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, OB_MODE_TEXTURE_PAINT);
 	}
-	else if ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)) {
-		modeselect = OB_MODE_GPENCIL;
-	}
 	else {
 		modeselect = OB_MODE_OBJECT;
 	}




More information about the Bf-blender-cvs mailing list