diff options
| author | jacob1 <jfu614@gmail.com> | 2012-08-08 16:57:55 (GMT) |
|---|---|---|
| committer | jacksonmj <mj-pt@jacksonmj.co.uk> | 2012-08-13 23:26:51 (GMT) |
| commit | b3b9b0961ce85feafd0051c1eb88fa1b95ba9289 (patch) | |
| tree | 4774e7f77d34698e5a3ad4d7b636fddb5a7c9389 /src/main.c | |
| parent | 3c78cce7a56c91b7c4db8526f988101a5e1e2b2c (diff) | |
| download | powder-b3b9b0961ce85feafd0051c1eb88fa1b95ba9289.zip powder-b3b9b0961ce85feafd0051c1eb88fa1b95ba9289.tar.gz | |
Fix cut message, stamps/copying can be done backwards, fix xor_rect
(amended to remove extra argument to build_save)
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 73 |
1 files changed, 51 insertions, 22 deletions
@@ -2178,34 +2178,46 @@ int main(int argc, char *argv[]) save_h = my + 1 - save_y; if (save_w+save_x>XRES) save_w = XRES-save_x; if (save_h+save_y>YRES) save_h = YRES-save_y; - if (save_w<1) save_w = 1; - if (save_h<1) save_h = 1; + if (save_w+save_x<0) save_w = 0; + if (save_h+save_y<0) save_h = 0; + //if (save_w<1) save_w = 1; + //if (save_h<1) save_h = 1; if (!b) { - if (copy_mode==1)//CTRL-C, copy + if (save_w < 0) { - clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts); - if (clipboard_data) - clipboard_ready = 1; - save_mode = 0; - copy_mode = 0; + save_x = save_x + save_w - 1; + save_w = abs(save_w) + 2; } - else if (copy_mode==2)//CTRL-X, cut + if (save_h < 0) { - clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts); - if (clipboard_data) - { - clipboard_ready = 1; - clear_area(save_x, save_y, save_w, save_h); - } - save_mode = 0; - copy_mode = 0; + save_y = save_y + save_h - 1; + save_h = abs(save_h) + 2; } - else//normal save + if (save_h > 0 && save_w > 0) { - stamp_save(save_x, save_y, save_w, save_h); - save_mode = 0; + if (copy_mode==1)//CTRL-C, copy + { + clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts); + if (clipboard_data) + clipboard_ready = 1; + } + else if (copy_mode==2)//CTRL-X, cut + { + clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts); + if (clipboard_data) + { + clipboard_ready = 1; + clear_area(save_x, save_y, save_w, save_h); + } + } + else//normal save + { + stamp_save(save_x, save_y, save_w, save_h); + } } + copy_mode = 0; + save_mode = 0; } } else if (sdl_zoom_trig && zoom_en<2) @@ -2570,9 +2582,23 @@ int main(int argc, char *argv[]) if (save_mode)//draw dotted lines for selection { - xor_rect(vid_buf, save_x, save_y, save_w, save_h); + int savex = save_x, savey = save_y, savew = save_w, saveh = save_h; + if (savew < 0) + { + savex = savex + savew - 1; + savew = abs(savew) + 2; + } + if (saveh < 0) + { + savey = savey + saveh - 1; + saveh = abs(saveh) + 2; + } + xor_rect(vid_buf, savex, savey, savew, saveh); da = 51;//draws mouseover text for the message - db = 269;//the save message + if (copy_mode != 2) + db = 269;//the save message + else + db = 278; } if (zoom_en!=1 && !load_mode && !save_mode)//draw normal cursor @@ -2656,6 +2682,9 @@ int main(int argc, char *argv[]) case 277: drawtext(vid_buf, 16, YRES-24, "Save the simulation to your hard drive.", 255, 255, 255, da*5); break; + case 278: //Fix for Ctrl + X showing copy message + drawtext(vid_buf, 16, YRES-24, "Click-and-drag to specify a rectangle to copy and then cut (right click = cancel).", 255, 216, 32, da*5); + break; default: drawtext(vid_buf, 16, YRES-24, (char *)ptypes[db].descs, 255, 255, 255, da*5); } |
