diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-05-02 15:34:57 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-05-02 15:34:57 +0400 |
commit | c2f18383f9637b61dc58cabacf109acb5bcd65f8 (patch) | |
tree | 85b9218b29153483ab467cd6c0f07a5dfaed5cb2 /source/blender/editors/space_view3d/view3d_header.c | |
parent | b0ed43c58160316e490250533c0eb9237a26c9d3 (diff) |
Fix #27165: uvedit mesh selection sync did not handle click / shift+click
for switching selection modes in the header.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_header.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 939c44a0514..63c3c6901c3 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -432,6 +432,27 @@ static int object_mode_icon(int mode) return ICON_OBJECT_DATAMODE; } +void uiTemplateEditModeSelection(uiLayout *layout, struct bContext *C) +{ + Object *obedit = CTX_data_edit_object(C); + uiBlock *block= uiLayoutGetBlock(layout); + + uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); + + if(obedit && (obedit->type == OB_MESH)) { + EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); + uiLayout *row; + + row= uiLayoutRow(layout, 1); + block= uiLayoutGetBlock(row); + uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode"); + + BKE_mesh_end_editmesh(obedit->data, em); + } +} + void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) { bScreen *screen= CTX_wm_screen(C); @@ -527,16 +548,6 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiItemR(layout, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY, "", ICON_NONE); } - /* selection modus, dont use python for this since it cant do the toggle buttons with shift+click as well as clicking to set one. */ - if(obedit && (obedit->type == OB_MESH)) { - EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - - row= uiLayoutRow(layout, 1); - block= uiLayoutGetBlock(row); - uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode"); - uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode"); - uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode"); - - BKE_mesh_end_editmesh(obedit->data, em); - } + uiTemplateEditModeSelection(layout, C); } + |