fix some regressions (place wires/lines/polys/rectangles from context menu), restore selection when creating a new arc
This commit is contained in:
parent
c88a8334a5
commit
174d590ad1
|
|
@ -3066,14 +3066,14 @@ void change_layer()
|
|||
if(modified) set_modify(1);
|
||||
}
|
||||
|
||||
void new_arc(int what, double sweep)
|
||||
void new_arc(int what, double sweep, double mousex_snap, double mousey_snap)
|
||||
{
|
||||
if(what & PLACE) {
|
||||
xctx->nl_state=0;
|
||||
xctx->nl_r = -1.;
|
||||
xctx->nl_sweep_angle=sweep;
|
||||
xctx->nl_xx1 = xctx->nl_xx2 = xctx->nl_x1 = xctx->nl_x2 = xctx->nl_x3 = xctx->mousex_snap;
|
||||
xctx->nl_yy1 = xctx->nl_yy2 = xctx->nl_y1 = xctx->nl_y2 = xctx->nl_y3 = xctx->mousey_snap;
|
||||
xctx->nl_xx1 = xctx->nl_xx2 = xctx->nl_x1 = xctx->nl_x2 = xctx->nl_x3 = mousex_snap;
|
||||
xctx->nl_yy1 = xctx->nl_yy2 = xctx->nl_y1 = xctx->nl_y2 = xctx->nl_y3 = mousey_snap;
|
||||
xctx->ui_state |= STARTARC;
|
||||
}
|
||||
if(what & SET) {
|
||||
|
|
@ -3081,6 +3081,7 @@ void new_arc(int what, double sweep)
|
|||
xctx->nl_x2 = xctx->mousex_snap;
|
||||
xctx->nl_y2 = xctx->mousey_snap;
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_xx1, xctx->nl_yy1, xctx->nl_xx2, xctx->nl_yy2);
|
||||
xctx->nl_state=1;
|
||||
} else if(xctx->nl_state==1) {
|
||||
xctx->nl_x3 = xctx->mousex_snap;
|
||||
|
|
@ -3101,9 +3102,10 @@ void new_arc(int what, double sweep)
|
|||
if(what & RUBBER) {
|
||||
if(xctx->nl_state==0) {
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_xx1, xctx->nl_yy1, xctx->nl_xx2, xctx->nl_yy2);
|
||||
xctx->nl_x2 = xctx->mousex_snap;xctx->nl_y2 = xctx->mousey_snap;
|
||||
xctx->nl_xx2 = xctx->mousex_snap;
|
||||
xctx->nl_yy2 = xctx->mousey_snap;
|
||||
xctx->nl_xx1 = xctx->nl_x1;xctx->nl_yy1 = xctx->nl_y1;
|
||||
ORDER(xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtempline(xctx->gc[SELLAYER], NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
}
|
||||
|
|
@ -3114,6 +3116,9 @@ void new_arc(int what, double sweep)
|
|||
drawtemparc(xctx->gctiled, NOW, xctx->nl_x, xctx->nl_y, xctx->nl_r, xctx->nl_a, xctx->nl_b);
|
||||
arc_3_points(xctx->nl_x1, xctx->nl_y1, xctx->nl_x2, xctx->nl_y2,
|
||||
xctx->nl_x3, xctx->nl_y3, &xctx->nl_x, &xctx->nl_y, &xctx->nl_r, &xctx->nl_a, &xctx->nl_b);
|
||||
restore_selection(xctx->nl_xx1, xctx->nl_yy1, xctx->nl_xx2, xctx->nl_yy2);
|
||||
arc_bbox(xctx->nl_x, xctx->nl_y, xctx->nl_r, xctx->nl_a, xctx->nl_b,
|
||||
&xctx->nl_xx1, &xctx->nl_yy1, &xctx->nl_xx2, &xctx->nl_yy2);
|
||||
if(xctx->nl_sweep_angle==360.) xctx->nl_b=360.;
|
||||
if(xctx->nl_r>0.) drawtemparc(xctx->gc[xctx->rectcolor], NOW,
|
||||
xctx->nl_x, xctx->nl_y, xctx->nl_r, xctx->nl_a, xctx->nl_b);
|
||||
|
|
@ -3121,9 +3126,11 @@ void new_arc(int what, double sweep)
|
|||
}
|
||||
}
|
||||
|
||||
void new_line(int what)
|
||||
void new_line(int what, double mousex_snap, double mousey_snap)
|
||||
{
|
||||
int modified = 0;
|
||||
|
||||
|
||||
if( (what & PLACE) )
|
||||
{
|
||||
if( (xctx->nl_x1!=xctx->nl_x2 || xctx->nl_y1!=xctx->nl_y2) && (xctx->ui_state & STARTLINE) )
|
||||
|
|
@ -3173,7 +3180,7 @@ void new_line(int what)
|
|||
}
|
||||
if(modified) set_modify(1);
|
||||
}
|
||||
xctx->nl_x1=xctx->nl_x2=xctx->mousex_snap;xctx->nl_y1=xctx->nl_y2=xctx->mousey_snap;
|
||||
xctx->nl_x1=xctx->nl_x2=mousex_snap;xctx->nl_y1=xctx->nl_y2=mousey_snap;
|
||||
xctx->ui_state |= STARTLINE;
|
||||
}
|
||||
if( what & END)
|
||||
|
|
@ -3184,16 +3191,16 @@ void new_line(int what)
|
|||
if(what & RUBBER)
|
||||
{
|
||||
if(xctx->manhattan_lines==1) {
|
||||
xctx->nl_xx1=xctx->nl_x1;xctx->nl_yy1=xctx->nl_y1;
|
||||
xctx->nl_xx2=xctx->nl_x2;xctx->nl_yy2=xctx->nl_y2;
|
||||
xctx->nl_xx1 = xctx->nl_x1;xctx->nl_yy1 = xctx->nl_y1;
|
||||
xctx->nl_xx2 = xctx->nl_x2;xctx->nl_yy2 = xctx->nl_y2;
|
||||
ORDER(xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy1);
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy1);
|
||||
xctx->nl_xx1=xctx->nl_x1;xctx->nl_yy1=xctx->nl_y1;
|
||||
xctx->nl_xx2=xctx->nl_x2;xctx->nl_yy2=xctx->nl_y2;
|
||||
xctx->nl_xx1 = xctx->nl_x1;xctx->nl_yy1 = xctx->nl_y1;
|
||||
xctx->nl_xx2 = xctx->nl_x2;xctx->nl_yy2 = xctx->nl_y2;
|
||||
ORDER(xctx->nl_xx2,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx2,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_x1, xctx->nl_y1, xctx->nl_x2, xctx->nl_y2);
|
||||
xctx->nl_x2 = xctx->mousex_snap; xctx->nl_y2 = xctx->mousey_snap;
|
||||
xctx->nl_x2 = mousex_snap; xctx->nl_y2 = mousey_snap;
|
||||
if(!(what & CLEAR)) {
|
||||
xctx->nl_xx1 = xctx->nl_x1; xctx->nl_yy1 = xctx->nl_y1;
|
||||
xctx->nl_xx2 = xctx->nl_x2; xctx->nl_yy2 = xctx->nl_y2;
|
||||
|
|
@ -3214,7 +3221,7 @@ void new_line(int what)
|
|||
ORDER(xctx->nl_xx1,xctx->nl_yy2,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx1,xctx->nl_yy2,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_x1, xctx->nl_y1, xctx->nl_x2, xctx->nl_y2);
|
||||
xctx->nl_x2 = xctx->mousex_snap; xctx->nl_y2 = xctx->mousey_snap;
|
||||
xctx->nl_x2 = mousex_snap; xctx->nl_y2 = mousey_snap;
|
||||
if(!(what & CLEAR)) {
|
||||
xctx->nl_xx1 = xctx->nl_x1; xctx->nl_yy1 = xctx->nl_y1;
|
||||
xctx->nl_xx2 = xctx->nl_x2; xctx->nl_yy2 = xctx->nl_y2;
|
||||
|
|
@ -3231,7 +3238,7 @@ void new_line(int what)
|
|||
ORDER(xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtempline(xctx->gctiled, NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_x1, xctx->nl_y1, xctx->nl_x2, xctx->nl_y2);
|
||||
xctx->nl_x2 = xctx->mousex_snap; xctx->nl_y2 = xctx->mousey_snap;
|
||||
xctx->nl_x2 = mousex_snap; xctx->nl_y2 = mousey_snap;
|
||||
if(!(what & CLEAR)) {
|
||||
xctx->nl_xx1 = xctx->nl_x1; xctx->nl_yy1 = xctx->nl_y1;
|
||||
xctx->nl_xx2 = xctx->nl_x2; xctx->nl_yy2 = xctx->nl_y2;
|
||||
|
|
@ -3242,7 +3249,7 @@ void new_line(int what)
|
|||
}
|
||||
}
|
||||
|
||||
void new_rect(int what)
|
||||
void new_rect(int what, double mousex_snap, double mousey_snap)
|
||||
{
|
||||
int modified = 0;
|
||||
if( (what & PLACE) )
|
||||
|
|
@ -3261,7 +3268,7 @@ void new_rect(int what)
|
|||
storeobject(-1, xctx->nl_x1,xctx->nl_y1,xctx->nl_x2,xctx->nl_y2,xRECT,xctx->rectcolor, 0, NULL);
|
||||
modified = 1;
|
||||
}
|
||||
xctx->nl_x1=xctx->nl_x2=xctx->mousex_snap;xctx->nl_y1=xctx->nl_y2=xctx->mousey_snap;
|
||||
xctx->nl_x1 = xctx->nl_x2 = mousex_snap;xctx->nl_y1 = xctx->nl_y2 = mousey_snap;
|
||||
xctx->ui_state |= STARTRECT;
|
||||
if(modified) set_modify(1);
|
||||
}
|
||||
|
|
@ -3271,19 +3278,19 @@ void new_rect(int what)
|
|||
}
|
||||
if(what & RUBBER)
|
||||
{
|
||||
xctx->nl_xx1=xctx->nl_x1;xctx->nl_yy1=xctx->nl_y1;xctx->nl_xx2=xctx->nl_x2;xctx->nl_yy2=xctx->nl_y2;
|
||||
xctx->nl_xx1 = xctx->nl_x1;xctx->nl_yy1 = xctx->nl_y1;xctx->nl_xx2 = xctx->nl_x2;xctx->nl_yy2 = xctx->nl_y2;
|
||||
RECTORDER(xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtemprect(xctx->gctiled,NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
restore_selection(xctx->nl_x1, xctx->nl_y1, xctx->nl_x2, xctx->nl_y2);
|
||||
xctx->nl_x2=xctx->mousex_snap;xctx->nl_y2=xctx->mousey_snap;
|
||||
xctx->nl_xx1=xctx->nl_x1;xctx->nl_yy1=xctx->nl_y1;xctx->nl_xx2=xctx->nl_x2;xctx->nl_yy2=xctx->nl_y2;
|
||||
xctx->nl_x2 = xctx->mousex_snap;xctx->nl_y2 = xctx->mousey_snap;
|
||||
xctx->nl_xx1 = xctx->nl_x1;xctx->nl_yy1 = xctx->nl_y1;xctx->nl_xx2 = xctx->nl_x2;xctx->nl_yy2 = xctx->nl_y2;
|
||||
RECTORDER(xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
drawtemprect(xctx->gc[xctx->rectcolor], NOW, xctx->nl_xx1,xctx->nl_yy1,xctx->nl_xx2,xctx->nl_yy2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void new_polygon(int what)
|
||||
void new_polygon(int what, double mousex_snap, double mousey_snap)
|
||||
{
|
||||
if( what & PLACE ) xctx->nl_points=0; /* start new polygon placement */
|
||||
|
||||
|
|
@ -3295,14 +3302,14 @@ void new_polygon(int what)
|
|||
if( what & PLACE )
|
||||
{
|
||||
/* fprintf(errfp, "new_poly: PLACE, nl_points=%d\n", xctx->nl_points); */
|
||||
xctx->nl_polyy[xctx->nl_points]=xctx->mousey_snap;
|
||||
xctx->nl_polyx[xctx->nl_points]=xctx->mousex_snap;
|
||||
xctx->nl_polyy[xctx->nl_points]=mousey_snap;
|
||||
xctx->nl_polyx[xctx->nl_points]=mousex_snap;
|
||||
xctx->nl_points++;
|
||||
xctx->nl_polyx[xctx->nl_points]=xctx->nl_polyx[xctx->nl_points-1]; /* prepare next point for rubber */
|
||||
xctx->nl_polyy[xctx->nl_points] = xctx->nl_polyy[xctx->nl_points-1];
|
||||
/* fprintf(errfp, "added point: %.16g %.16g\n", xctx->nl_polyx[xctx->nl_points-1],
|
||||
xctx->nl_polyy[xctx->nl_points-1]); */
|
||||
xctx->nl_x1=xctx->nl_x2=xctx->mousex_snap;xctx->nl_y1=xctx->nl_y2=xctx->mousey_snap;
|
||||
xctx->nl_x1=xctx->nl_x2=mousex_snap;xctx->nl_y1=xctx->nl_y2=mousey_snap;
|
||||
xctx->ui_state |= STARTPOLYGON;
|
||||
set_modify(1);
|
||||
}
|
||||
|
|
@ -3568,7 +3575,7 @@ int create_text(int draw_text, double x, double y, int rot, int flip, const char
|
|||
my_strdup(_ALLOC_ID_, &t->prop_ptr, props);
|
||||
/* debug ... */
|
||||
/* t->prop_ptr=NULL; */
|
||||
dbg(1, "place_text(): done text input\n");
|
||||
dbg(1, "create_text(): done text input\n");
|
||||
set_text_flags(t);
|
||||
textlayer = t->layer;
|
||||
if(textlayer < 0 || textlayer >= cadlayers) textlayer = TEXTLAYER;
|
||||
|
|
|
|||
109
src/callback.c
109
src/callback.c
|
|
@ -79,18 +79,18 @@ void redraw_w_a_l_r_p_rubbers(void)
|
|||
if(xctx->ui_state & STARTARC) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_arc(RUBBER, 0);
|
||||
new_arc(RUBBER, 0, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
if(xctx->ui_state & STARTLINE) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_line(RUBBER);
|
||||
new_line(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
if(xctx->ui_state & STARTRECT) new_rect(RUBBER);
|
||||
if(xctx->ui_state & STARTRECT) new_rect(RUBBER,xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(xctx->ui_state & STARTPOLYGON) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_polygon(RUBBER);
|
||||
new_polygon(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ void abort_operation(void)
|
|||
constrained_move=0;
|
||||
if(xctx->last_command && xctx->ui_state & (STARTWIRE | STARTLINE)) {
|
||||
if(xctx->ui_state & STARTWIRE) new_wire(RUBBER|CLEAR, xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(xctx->ui_state & STARTLINE) new_line(RUBBER|CLEAR);
|
||||
if(xctx->ui_state & STARTLINE) new_line(RUBBER|CLEAR, xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(tclgetboolvar("draw_crosshair")) draw_crosshair(2);
|
||||
xctx->ui_state = 0;
|
||||
return;
|
||||
|
|
@ -137,7 +137,7 @@ void abort_operation(void)
|
|||
draw();
|
||||
}
|
||||
|
||||
static void start_place_symbol(double mx, double my)
|
||||
static void start_place_symbol(void)
|
||||
{
|
||||
xctx->last_command = 0;
|
||||
rebuild_selected_array();
|
||||
|
|
@ -161,18 +161,18 @@ static void start_line(double mx, double my)
|
|||
xctx->last_command = STARTLINE;
|
||||
if(xctx->ui_state & STARTLINE) {
|
||||
if(constrained_move != 2) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->mx_double_save=mx;
|
||||
}
|
||||
if(constrained_move != 1) {
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->my_double_save=my;
|
||||
}
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
if(constrained_move == 1) my = xctx->my_double_save;
|
||||
if(constrained_move == 2) mx = xctx->mx_double_save;
|
||||
} else {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->mx_double_save=mx;
|
||||
xctx->my_double_save=my;
|
||||
}
|
||||
new_line(PLACE);
|
||||
new_line(PLACE, mx, my);
|
||||
}
|
||||
|
||||
static void start_wire(double mx, double my)
|
||||
|
|
@ -180,19 +180,18 @@ static void start_wire(double mx, double my)
|
|||
xctx->last_command = STARTWIRE;
|
||||
if(xctx->ui_state & STARTWIRE) {
|
||||
if(constrained_move != 2) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->mx_double_save = mx;
|
||||
}
|
||||
if(constrained_move != 1) {
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->my_double_save = my;
|
||||
}
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
if(constrained_move == 1) my = xctx->my_double_save;
|
||||
if(constrained_move == 2) mx = xctx->mx_double_save;
|
||||
} else {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->mx_double_save=mx;
|
||||
xctx->my_double_save=my;
|
||||
}
|
||||
new_wire(PLACE,xctx->mousex_snap, xctx->mousey_snap);
|
||||
|
||||
new_wire(PLACE,mx, my);
|
||||
}
|
||||
|
||||
static double interpolate_yval(int idx, int point_not_last)
|
||||
|
|
@ -1136,7 +1135,7 @@ static int end_place_move_copy_zoom(int constrained_move)
|
|||
return 1;
|
||||
}
|
||||
else if(xctx->ui_state & STARTARC) {
|
||||
new_arc(SET, 0);
|
||||
new_arc(SET, 0, xctx->mousex_snap, xctx->mousey_snap);
|
||||
return 1;
|
||||
}
|
||||
else if(xctx->ui_state & STARTLINE) {
|
||||
|
|
@ -1149,22 +1148,22 @@ static int end_place_move_copy_zoom(int constrained_move)
|
|||
}
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_line(PLACE);
|
||||
new_line(PLACE, xctx->mousex_snap, xctx->mousey_snap);
|
||||
} else {
|
||||
new_line(PLACE|END);
|
||||
new_line(PLACE|END, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
constrained_move=0;
|
||||
tcleval("set constrained_move 0" );
|
||||
return 1;
|
||||
}
|
||||
else if(xctx->ui_state & STARTRECT) {
|
||||
new_rect(PLACE|END);
|
||||
new_rect(PLACE|END,xctx->mousex_snap, xctx->mousey_snap);
|
||||
return 1;
|
||||
}
|
||||
else if(xctx->ui_state & STARTPOLYGON) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_polygon(ADD);
|
||||
new_polygon(ADD, xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
constrained_move=0;
|
||||
|
|
@ -1228,35 +1227,35 @@ static int check_menu_start_commands(double c_snap)
|
|||
else if((xctx->ui_state & MENUSTART) && (xctx->ui_state2 & MENUSTARTLINE)) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
new_line(PLACE);
|
||||
new_line(PLACE, xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->ui_state &=~MENUSTART;
|
||||
return 1;
|
||||
}
|
||||
else if((xctx->ui_state & MENUSTART) && (xctx->ui_state2 & MENUSTARTRECT)) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
new_rect(PLACE);
|
||||
new_rect(PLACE,xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->ui_state &=~MENUSTART;
|
||||
return 1;
|
||||
}
|
||||
else if((xctx->ui_state & MENUSTART) && (xctx->ui_state2 & MENUSTARTPOLYGON)) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
new_polygon(PLACE);
|
||||
new_polygon(PLACE, xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->ui_state &=~MENUSTART;
|
||||
return 1;
|
||||
}
|
||||
else if((xctx->ui_state & MENUSTART) && (xctx->ui_state2 & MENUSTARTARC)) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
new_arc(PLACE, 180.);
|
||||
new_arc(PLACE, 180., xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->ui_state &=~MENUSTART;
|
||||
return 1;
|
||||
}
|
||||
else if((xctx->ui_state & MENUSTART) && (xctx->ui_state2 & MENUSTARTCIRCLE)) {
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
new_arc(PLACE, 360.);
|
||||
new_arc(PLACE, 360., xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->ui_state &=~MENUSTART;
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -1454,8 +1453,7 @@ static int edit_polygon_point(int state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Mouse wheel events */
|
||||
static void context_menu_action(int mx, int my)
|
||||
static void context_menu_action(double mx, double my)
|
||||
{
|
||||
int ret;
|
||||
const char *status;
|
||||
|
|
@ -1467,7 +1465,7 @@ static void context_menu_action(int mx, int my)
|
|||
ret = atoi(status);
|
||||
switch(ret) {
|
||||
case 1:
|
||||
start_place_symbol(mx, my);
|
||||
start_place_symbol();
|
||||
break;
|
||||
case 2:
|
||||
prev_state = xctx->ui_state;
|
||||
|
|
@ -1489,19 +1487,19 @@ static void context_menu_action(int mx, int my)
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_rect(PLACE);
|
||||
new_rect(PLACE,mx, my);
|
||||
break;
|
||||
case 5:
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_polygon(PLACE);
|
||||
new_polygon(PLACE, mx, my);
|
||||
break;
|
||||
case 6: /* place text */
|
||||
xctx->last_command = 0;
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
if(place_text(0, xctx->mousex_snap, xctx->mousey_snap)) { /* 1 = draw text */
|
||||
if(place_text(0, mx, my)) { /* 1 = draw text */
|
||||
xctx->mousey_snap = xctx->my_double_save;
|
||||
xctx->mousex_snap = xctx->mx_double_save;
|
||||
move_objects(START,0,0,0);
|
||||
|
|
@ -1563,13 +1561,13 @@ static void context_menu_action(int mx, int my)
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_arc(PLACE, 180.);
|
||||
new_arc(PLACE, 180., mx, my);
|
||||
break;
|
||||
case 20: /* place circle */
|
||||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_arc(PLACE, 360.);
|
||||
new_arc(PLACE, 360., mx, my);
|
||||
break;
|
||||
case 21: /* abort & redraw */
|
||||
abort_operation();
|
||||
|
|
@ -1579,6 +1577,7 @@ static void context_menu_action(int mx, int my)
|
|||
}
|
||||
}
|
||||
|
||||
/* Mouse wheel events */
|
||||
static int handle_mouse_wheel(int event, int mx, int my, KeySym key, int button, int aux, int state)
|
||||
{
|
||||
if(button==Button5 && state == 0 ) {
|
||||
|
|
@ -1966,10 +1965,10 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
new_wire(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
|
||||
} else if(xctx->ui_state==STARTLINE) {
|
||||
new_line(RUBBER|CLEAR);
|
||||
new_line(RUBBER|CLEAR, xctx->mousex_snap, xctx->mousey_snap);
|
||||
xctx->manhattan_lines++;
|
||||
xctx->manhattan_lines %=3;
|
||||
new_line(RUBBER);
|
||||
new_line(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
} else {
|
||||
if(xctx->semaphore<2) {
|
||||
rebuild_selected_array(); /* sets or clears xctx->ui_state SELECTION flag */
|
||||
|
|
@ -2077,7 +2076,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
if(xctx->ui_state & STARTLINE) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_line(RUBBER);
|
||||
new_line(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -2106,7 +2105,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
if(xctx->ui_state & STARTLINE) {
|
||||
if(constrained_move == 1) xctx->mousey_snap = xctx->my_double_save;
|
||||
if(constrained_move == 2) xctx->mousex_snap = xctx->mx_double_save;
|
||||
new_line(RUBBER);
|
||||
new_line(RUBBER, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -2210,7 +2209,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
{
|
||||
int prev_state = xctx->ui_state;
|
||||
if(xctx->semaphore >= 2) break;
|
||||
start_wire(mx, my);
|
||||
start_wire(xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(prev_state == STARTWIRE) {
|
||||
tcleval("set constrained_move 0" );
|
||||
constrained_move=0;
|
||||
|
|
@ -2218,7 +2217,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
break;
|
||||
}
|
||||
if(key == XK_Return && (state == 0 ) && xctx->ui_state & STARTPOLYGON) { /* close polygon */
|
||||
new_polygon(ADD|END);
|
||||
new_polygon(ADD|END, xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
if(key == XK_Escape) /* abort & redraw */
|
||||
|
|
@ -2257,7 +2256,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_polygon(PLACE);
|
||||
new_polygon(PLACE, xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
if(key=='P' && rstate == 0) /* pan, other way to. */
|
||||
|
|
@ -2391,7 +2390,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_rect(PLACE);
|
||||
new_rect(PLACE,xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
if(key=='V' && rstate == ControlMask) /* toggle spice/vhdl netlist */
|
||||
|
|
@ -2570,7 +2569,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_arc(PLACE, 180.);
|
||||
new_arc(PLACE, 180., xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
if(key=='C' /* && !xctx->ui_state */ && rstate == ControlMask) /* place circle */
|
||||
|
|
@ -2579,7 +2578,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
xctx->mx_double_save=xctx->mousex_snap;
|
||||
xctx->my_double_save=xctx->mousey_snap;
|
||||
xctx->last_command = 0;
|
||||
new_arc(PLACE, 360.);
|
||||
new_arc(PLACE, 360., xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
if(key=='O' && rstate == ControlMask ) /* load most recent tile */
|
||||
|
|
@ -2658,7 +2657,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
if((key==XK_Insert && state == 0) || (key == 'I' && rstate == 0) ) /* insert sym */
|
||||
{
|
||||
if(xctx->semaphore >= 2) break;
|
||||
start_place_symbol(mx, my);
|
||||
start_place_symbol();
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -2881,7 +2880,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
if(key=='l' /* && !xctx->ui_state */ && rstate == 0) /* start line */
|
||||
{
|
||||
int prev_state = xctx->ui_state;
|
||||
start_line(mx, my);
|
||||
start_line(xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(prev_state == STARTLINE) {
|
||||
tcleval("set constrained_move 0" );
|
||||
constrained_move=0;
|
||||
|
|
@ -3335,7 +3334,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
if(sel.type) select_connected_nets(0);
|
||||
}
|
||||
else if(button == Button3 && state == 0 && xctx->semaphore <2) {
|
||||
context_menu_action(mx, my);
|
||||
context_menu_action(xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
/* Mouse wheel events */
|
||||
else if(handle_mouse_wheel(event, mx, my, key, button, aux, state)) break;
|
||||
|
|
@ -3371,8 +3370,8 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
{
|
||||
xctx->drag_elements = 0;
|
||||
if(tclgetboolvar("persistent_command") && xctx->last_command) {
|
||||
if(xctx->last_command == STARTLINE) start_line(mx, my);
|
||||
if(xctx->last_command == STARTWIRE) start_wire(mx, my);
|
||||
if(xctx->last_command == STARTLINE) start_line(xctx->mousex_snap, xctx->mousey_snap);
|
||||
if(xctx->last_command == STARTWIRE) start_wire(xctx->mousex_snap, xctx->mousey_snap);
|
||||
break;
|
||||
}
|
||||
/* handle all object insertions started from Tools menu */
|
||||
|
|
@ -3541,7 +3540,7 @@ int rstate; /* (reduced state, without ShiftMask) */
|
|||
xctx->ui_state &= ~STARTLINE;
|
||||
}
|
||||
if( (xctx->ui_state & STARTPOLYGON) && (state ==0 ) ) {
|
||||
new_polygon(SET);
|
||||
new_polygon(SET, xctx->mousex_snap, xctx->mousey_snap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1500,8 +1500,8 @@ extern void view_unzoom(double z);
|
|||
extern void view_zoom(double z);
|
||||
extern void draw_stuff(void);
|
||||
extern void new_wire(int what, double mx_snap, double my_snap);
|
||||
extern void new_line(int what);
|
||||
extern void new_arc(int what, double sweep);
|
||||
extern void new_line(int what, double mx_snap, double my_snap);
|
||||
extern void new_arc(int what, double sweep, double mousex_snap, double mousey_snap);
|
||||
extern void arc_3_points(double x1, double y1, double x2, double y2, double x3, double y3,
|
||||
double *x, double *y, double *r, double *a, double *b);
|
||||
extern void move_objects(int what,int merge, double dx, double dy);
|
||||
|
|
@ -1514,8 +1514,8 @@ extern void zoom_rectangle(int what);
|
|||
extern void zoom_box(double x1, double y1, double x2, double y2, double factor);
|
||||
extern void save_restore_zoom(int save, Zoom_info *zi);
|
||||
extern void select_rect(int what, int select);
|
||||
extern void new_rect(int what);
|
||||
extern void new_polygon(int what);
|
||||
extern void new_rect(int what, double mousex_snap, double mousey_snap);
|
||||
extern void new_polygon(int what, double mousex_snap, double mousey_snap);
|
||||
extern void compile_font(void);
|
||||
extern void rebuild_selected_array(void);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue