Commit: 5bd57aaa052d9578d089a92338d6f0977b5d6c5c
Author: Brecht Van Lommel
Date:   Thu Jul 5 12:28:03 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB5bd57aaa052d9578d089a92338d6f0977b5d6c5c

Viewport: tweak Z key shading toggle.

* Z now goes to solid mode when in lookdev or rendered mode.
* Alt-Z was broken after removal of texture mode, now toggles lookdev mode.
* Simplify code by turning it into a single operator.

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

M       source/blender/editors/space_view3d/view3d_edit.c
M       source/blender/editors/space_view3d/view3d_header.c
M       source/blender/editors/space_view3d/view3d_intern.h
M       source/blender/editors/space_view3d/view3d_ops.c

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

diff --git a/source/blender/editors/space_view3d/view3d_edit.c 
b/source/blender/editors/space_view3d/view3d_edit.c
index 88edf32d154..cfc73367435 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -4805,34 +4805,77 @@ void VIEW3D_OT_cursor3d(wmOperatorType *ot)
 /** \} */
 
 /* -------------------------------------------------------------------- */
-/** \name Toggle Render Shading Operator
+/** \name Toggle Shading Operator
  * \{ */
 
-static int toggle_render_exec(bContext *C, wmOperator *UNUSED(op))
+static const EnumPropertyItem prop_shading_type_items[] = {
+       {OB_SOLID, "SOLID", 0, "Solid and X-Ray", "Toggle solid and X-ray 
shading"},
+       {OB_MATERIAL, "MATERIAL", 0, "LookDev", "Toggle lookdev shading"},
+       {OB_RENDER, "RENDERED", 0, "Rendered", "Toggle rendered shading"},
+       {0, NULL, 0, NULL, NULL}
+};
+
+static int toggle_shading_exec(bContext *C, wmOperator *op)
 {
+       Main *bmain = CTX_data_main(C);
        View3D *v3d = CTX_wm_view3d(C);
-       if (v3d->drawtype == OB_RENDER) {
-               v3d->drawtype = v3d->prev_drawtype;
+       ScrArea *sa = CTX_wm_area(C);
+       int type = RNA_enum_get(op->ptr, "type");
+
+       if (type == OB_SOLID) {
+               if (v3d->drawtype == OB_SOLID) {
+                       /* Toggle X-Ray if already in solid mode. */
+                       if (ED_operator_posemode(C) || ED_operator_editmesh(C)) 
{
+                               v3d->flag ^= V3D_ZBUF_SELECT;
+                       }
+                       else {
+                               v3d->shading.flag ^= V3D_SHADING_XRAY;
+                       }
+               }
+               else {
+                       /* Go to solid mode. */
+                       v3d->drawtype = OB_SOLID;
+               }
        }
-       else {
-               v3d->prev_drawtype = v3d->drawtype;
-               v3d->drawtype = OB_RENDER;
+       else if (type == OB_MATERIAL) {
+               if (v3d->drawtype == OB_MATERIAL) {
+                       v3d->drawtype = OB_SOLID;
+               }
+               else {
+                       v3d->drawtype = OB_MATERIAL;
+               }
+       }
+       else if (type == OB_RENDER) {
+               if (v3d->drawtype == OB_RENDER) {
+                       v3d->drawtype = v3d->prev_drawtype;
+               }
+               else {
+                       v3d->prev_drawtype = v3d->drawtype;
+                       v3d->drawtype = OB_RENDER;
+               }
        }
-       ED_view3d_shade_update(CTX_data_main(C), v3d, CTX_wm_area(C));
+
+       ED_view3d_shade_update(bmain, v3d, sa);
        WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
+
        return OPERATOR_FINISHED;
 }
 
-void VIEW3D_OT_toggle_render(wmOperatorType *ot)
+void VIEW3D_OT_toggle_shading(wmOperatorType *ot)
 {
+       PropertyRNA *prop;
+
        /* identifiers */
-       ot->name = "Toggle Rendered Shading";
-       ot->description = "Toggle rendered shading mode of the viewport";
-       ot->idname = "VIEW3D_OT_toggle_render";
+       ot->name = "Toggle Shading Type";
+       ot->description = "Toggle shading type in 3D viewport";
+       ot->idname = "VIEW3D_OT_toggle_shading";
 
        /* api callbacks */
-       ot->exec = toggle_render_exec;
+       ot->exec = toggle_shading_exec;
        ot->poll = ED_operator_view3d_active;
+
+       prop = RNA_def_enum(ot->srna, "type", prop_shading_type_items, 0, 
"Type", "Shading type to toggle");
+       RNA_def_property_flag(prop, PROP_SKIP_SAVE);
 }
 
 /** \} */
diff --git a/source/blender/editors/space_view3d/view3d_header.c 
b/source/blender/editors/space_view3d/view3d_header.c
index eeddacee808..a2dda8d6403 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -221,46 +221,10 @@ void VIEW3D_OT_layers(wmOperatorType *ot)
        RNA_def_boolean(ot->srna, "toggle", 1, "Toggle", "Toggle the layer");
 }
 
-/* -------------------------------------------------------------------- */
-/** \name Toggle Bone selection Overlay Operator
- * \{ */
-
-static int toggle_show_xray(bContext *C, wmOperator *UNUSED(op))
-{
-       View3D *v3d = CTX_wm_view3d(C);
-       v3d->shading.flag ^= V3D_SHADING_XRAY;
-       ED_view3d_shade_update(CTX_data_main(C), v3d, CTX_wm_area(C));
-       WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
-       return OPERATOR_FINISHED;
-}
-
-static bool toggle_show_xray_poll(bContext *C)
-{
-       bool result = (ED_operator_view3d_active(C) && !ED_operator_posemode(C) 
&& !ED_operator_editmesh(C));
-       if (result) {
-               // Additional test for SOLID or TEXTURE mode
-               View3D *v3d = CTX_wm_view3d(C);
-               result = (v3d->drawtype & (OB_SOLID | OB_TEXTURE)) > 0;
-       }
-       return result;
-}
-
-void VIEW3D_OT_toggle_xray_draw_option(wmOperatorType *ot)
-{
-       /* identifiers */
-       ot->name = "Toggle Show X-Ray";
-       ot->description = "Toggle show X-Ray";
-       ot->idname = "VIEW3D_OT_toggle_xray_draw_option";
-
-       /* api callbacks */
-       ot->exec = toggle_show_xray;
-       ot->poll = toggle_show_xray_poll;
-}
-
 /** \} */
 
 /* -------------------------------------------------------------------- */
-/** \name Toggle Bone selection Overlay Operator
+/** \name Toggle Matcap Flip Operator
  * \{ */
 
 static int toggle_matcap_flip(bContext *C, wmOperator *UNUSED(op))
@@ -281,7 +245,6 @@ void VIEW3D_OT_toggle_matcap_flip(wmOperatorType *ot)
 
        /* api callbacks */
        ot->exec = toggle_matcap_flip;
-       // ot->poll = toggle_show_xray_poll;
 }
 
 /** \} */
diff --git a/source/blender/editors/space_view3d/view3d_intern.h 
b/source/blender/editors/space_view3d/view3d_intern.h
index 9cc27a2854f..1b6e4213513 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -64,7 +64,6 @@ enum {
 
 /* view3d_header.c */
 void VIEW3D_OT_layers(struct wmOperatorType *ot);
-void VIEW3D_OT_toggle_xray_draw_option(struct wmOperatorType *ot);
 void VIEW3D_OT_toggle_matcap_flip(struct wmOperatorType *ot);
 
 /* view3d_ops.c */
@@ -104,7 +103,7 @@ void VIEW3D_OT_cursor3d(struct wmOperatorType *ot);
 void VIEW3D_OT_render_border(struct wmOperatorType *ot);
 void VIEW3D_OT_clear_render_border(struct wmOperatorType *ot);
 void VIEW3D_OT_zoom_border(struct wmOperatorType *ot);
-void VIEW3D_OT_toggle_render(struct wmOperatorType *ot);
+void VIEW3D_OT_toggle_shading(struct wmOperatorType *ot);
 
 void view3d_boxview_copy(ScrArea *sa, ARegion *ar);
 void view3d_boxview_sync(ScrArea *sa, ARegion *ar);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c 
b/source/blender/editors/space_view3d/view3d_ops.c
index b4fa092bede..2740b9a9042 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -222,8 +222,7 @@ void view3d_operatortypes(void)
        WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected);
        WM_operatortype_append(VIEW3D_OT_snap_cursor_to_active);
 
-       WM_operatortype_append(VIEW3D_OT_toggle_render);
-       WM_operatortype_append(VIEW3D_OT_toggle_xray_draw_option);
+       WM_operatortype_append(VIEW3D_OT_toggle_shading);
        WM_operatortype_append(VIEW3D_OT_toggle_matcap_flip);
 
        WM_operatortype_append(VIEW3D_OT_ruler_add);
@@ -404,16 +403,12 @@ void view3d_keymap(wmKeyConfig *keyconf)
 #endif /* WITH_INPUT_NDOF */
 
        /* drawtype */
-       kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, 
KM_PRESS, KM_ALT, 0);
-       RNA_string_set(kmi->ptr, "data_path", "space_data.shading.type");
-       RNA_string_set(kmi->ptr, "value_1", "SOLID");
-       RNA_string_set(kmi->ptr, "value_2", "TEXTURED");
-
-       WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_render", ZKEY, KM_PRESS, 
KM_SHIFT, 0);
-       WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_xray_draw_option", ZKEY, 
KM_PRESS, 0, 0);
-
-       kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", ZKEY, 
KM_PRESS, 0, 0);
-       RNA_string_set(kmi->ptr, "data_path", 
"space_data.use_occlude_geometry");
+       kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_shading", ZKEY, 
KM_PRESS, 0, 0);
+       RNA_enum_set(kmi->ptr, "type", OB_SOLID);
+       kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_shading", ZKEY, 
KM_PRESS, KM_ALT, 0);
+       RNA_enum_set(kmi->ptr, "type", OB_MATERIAL);
+       kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_shading", ZKEY, 
KM_PRESS, KM_SHIFT, 0);
+       RNA_enum_set(kmi->ptr, "type", OB_RENDER);
 
        /* selection*/
        kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, 
KM_PRESS, 0, 0);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to