Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/animation/anim_markers.c8
-rw-r--r--source/blender/editors/mesh/editmesh_add.c39
-rw-r--r--source/blender/editors/mesh/mesh_intern.h1
-rw-r--r--source/blender/editors/mesh/mesh_ops.c2
-rw-r--r--source/blender/editors/space_action/action_ops.c2
-rw-r--r--source/blender/editors/space_ipo/ipo_ops.c2
-rw-r--r--source/blender/editors/space_node/node_ops.c4
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c8
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c17
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c2
11 files changed, 59 insertions, 28 deletions
diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c
index 723a59e38f2..39ad92fd62e 100644
--- a/source/blender/editors/animation/anim_markers.c
+++ b/source/blender/editors/animation/anim_markers.c
@@ -857,10 +857,10 @@ void ED_marker_keymap(wmWindowManager *wm)
ListBase *keymap= WM_keymap_listbase(wm, "Markers", 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_add", MKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0);
+ WM_keymap_verify_item(keymap, "MARKER_OT_move", EVT_TWEAK_S, KM_ANY, 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_verify_item(keymap, "MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_verify_item(keymap, "MARKER_OT_mouseselect", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "MARKER_OT_mouseselect_extend", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0);
@@ -868,6 +868,6 @@ void ED_marker_keymap(wmWindowManager *wm)
WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0);
/* generates event, needs to be after select to work */
- WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index 54445f87150..ef648932eb4 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -118,6 +118,8 @@ static short icoface[20][3] = {
{10,9,11}
};
+/* *************** add-click-mesh (extrude) operator ************** */
+
static void get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2])
{
float dvec[3];
@@ -136,15 +138,19 @@ static void get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2
}
}
-void add_click_mesh(bContext *C)
+static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event)
{
ViewContext vc;
EditVert *eve, *v1;
float min[3], max[3];
int done= 0;
+ short mval[2];
em_setup_viewcontext(C, &vc);
+ mval[0]= event->x - vc.ar->winrct.xmin;
+ mval[1]= event->y - vc.ar->winrct.ymin;
+
INIT_MINMAX(min, max);
for(v1= vc.em->verts.first;v1; v1=v1->next) {
@@ -159,7 +165,6 @@ void add_click_mesh(bContext *C)
EditEdge *eed;
float vec[3], cent[3], mat[3][3];
float nor[3]= {0.0, 0.0, 0.0};
- short mval[2];
/* check for edges that are half selected, use for rotation */
done= 0;
@@ -220,27 +225,45 @@ void add_click_mesh(bContext *C)
float mat[3][3],imat[3][3];
float *curs= give_cursor(vc.scene, vc.v3d);
+ VECCOPY(min, curs);
+ get_view_aligned_coordinate(&vc, min, mval);
+
eve= addvertlist(vc.em, 0, NULL);
Mat3CpyMat4(mat, vc.obedit->obmat);
Mat3Inv(imat, mat);
- VECCOPY(eve->co, curs);
- VecSubf(eve->co, eve->co, vc.obedit->obmat[3]);
-
+ VECCOPY(eve->co, min);
Mat3MulVecfl(imat, eve->co);
+ VecSubf(eve->co, eve->co, vc.obedit->obmat[3]);
eve->f= SELECT;
}
//retopo_do_all();
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, vc.obedit);
+ DAG_object_flush_update(vc.scene, vc.obedit, OB_RECALC_DATA);
- BIF_undo_push("Add vertex/edge/face");
- DAG_object_flush_update(vc.scene, vc.obedit, OB_RECALC_DATA);
-
+ return OPERATOR_FINISHED;
+}
+void MESH_OT_dupli_extrude_cursor(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Duplicate or Extrude at 3D Cursor";
+ ot->idname= "MESH_OT_dupli_extrude_cursor";
+
+ /* api callbacks */
+ ot->invoke= dupli_extrude_cursor;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER/*|OPTYPE_UNDO*/;
}
+
+/* ********************** */
+
/* selected faces get hidden edges */
static void make_fgon(EditMesh *em, int make)
{
diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h
index a6d899e2451..44b1bf39446 100644
--- a/source/blender/editors/mesh/mesh_intern.h
+++ b/source/blender/editors/mesh/mesh_intern.h
@@ -106,6 +106,7 @@ void MESH_OT_add_primitive_grid(struct wmOperatorType *ot);
void MESH_OT_add_primitive_monkey(struct wmOperatorType *ot);
void MESH_OT_add_primitive_uv_sphere(struct wmOperatorType *ot);
void MESH_OT_add_primitive_ico_sphere(struct wmOperatorType *ot);
+void MESH_OT_dupli_extrude_cursor(struct wmOperatorType *ot);
/* ******************* editmesh_lib.c */
void EM_stats_update(EditMesh *em);
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 892db9e4dbc..4d25f0901c8 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -138,6 +138,7 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_extrude_mesh);
WM_operatortype_append(MESH_OT_edit_faces);
WM_operatortype_append(MESH_OT_separate);
+ WM_operatortype_append(MESH_OT_dupli_extrude_cursor);
}
@@ -181,6 +182,7 @@ void ED_keymap_mesh(wmWindowManager *wm)
WM_keymap_add_item(keymap, "MESH_OT_add_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
}
diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c
index 87ee41c795a..acea4848a2a 100644
--- a/source/blender/editors/space_action/action_ops.c
+++ b/source/blender/editors/space_action/action_ops.c
@@ -140,7 +140,7 @@ static void action_keymap_keyframes (wmWindowManager *wm, ListBase *keymap)
WM_keymap_add_item(keymap, "ACT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
/* generates event, needs to be after select to work */
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
/* transform system */
transform_keymap_for_space(wm, keymap, SPACE_ACTION);
diff --git a/source/blender/editors/space_ipo/ipo_ops.c b/source/blender/editors/space_ipo/ipo_ops.c
index 68ce0997906..4f62569f021 100644
--- a/source/blender/editors/space_ipo/ipo_ops.c
+++ b/source/blender/editors/space_ipo/ipo_ops.c
@@ -187,7 +187,7 @@ static void graphedit_keymap_keyframes (wmWindowManager *wm, ListBase *keymap)
//WM_keymap_add_item(keymap, "GRAPHEDIT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
/* generates event, needs to be after select to work */
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
/* transform system */
transform_keymap_for_space(wm, keymap, SPACE_IPO);
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index 55aa53e9821..2bcb1a0eb76 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -74,8 +74,8 @@ void node_keymap(struct wmWindowManager *wm)
WM_keymap_add_item(keymap, "NODE_OT_delete_selection", XKEY, KM_PRESS, 0, 0);
/* generates event, needs to be after select to work */
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", ACTIONMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, ACTIONMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
transform_keymap_for_space(wm, keymap, SPACE_NODE);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index b97bfeb5ca8..2459131f2ee 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -151,7 +151,7 @@ void sequencer_keymap(wmWindowManager *wm)
WM_keymap_verify_item(keymap, "ANIM_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
transform_keymap_for_space(wm, keymap, SPACE_SEQ);
}
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 049c6564429..81c87260af1 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -153,8 +153,8 @@ void view3d_keymap(wmWindowManager *wm)
WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1);
WM_keymap_add_item(keymap, "VIEW3D_OT_borderselect", BKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_lasso_select", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_lasso_select", LEFTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "type", 1);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_lasso_select", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0);
+ RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_lasso_select", EVT_TWEAK_A, KM_ANY, KM_SHIFT|KM_CTRL, 0)->ptr, "type", 1);
WM_keymap_add_item(keymap, "VIEW3D_OT_circle_select", CKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_clipping", BKEY, KM_PRESS, KM_ALT, 0);
@@ -182,7 +182,9 @@ void view3d_keymap(wmWindowManager *wm)
transform_keymap_for_space(wm, keymap, SPACE_VIEW3D);
/* generates event, in end to make select work */
- WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
+ /* tweak event for border, lasso, etc */
+ WM_keymap_tweak(keymap, ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
}
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 49d941f3d36..73ceb5c7fdb 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -702,13 +702,16 @@ static int view3d_lasso_select_exec(bContext *C, wmOperator *op)
}
RNA_END;
- /* setup view context for argument to callbacks */
- view3d_set_viewcontext(C, &vc);
-
- select= RNA_enum_is_equal(op->ptr, "type", "SELECT");
- view3d_lasso_select(&vc, mcords, i, select);
-
- return OPERATOR_FINISHED;
+ if(i>1) {
+ /* setup view context for argument to callbacks */
+ view3d_set_viewcontext(C, &vc);
+
+ select= RNA_enum_is_equal(op->ptr, "type", "SELECT");
+ view3d_lasso_select(&vc, mcords, i, select);
+
+ return OPERATOR_FINISHED;
+ }
+ return OPERATOR_PASS_THROUGH;
}
void VIEW3D_OT_lasso_select(wmOperatorType *ot)
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 24b664daa13..4f943a62065 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -2569,7 +2569,7 @@ void ED_keymap_uvedit(wmWindowManager *wm)
RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, KM_ALT)->ptr, "extend", 1);
/* generates event, needs to be after select to work */
- WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_tweak(keymap, SELECTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "UV_OT_unlink_selection", LKEY, KM_PRESS, KM_ALT, 0);