From: simon Date: Sat, 6 Nov 2010 18:14:41 +0000 (+0000) Subject: In the Java front end, don't try to guess the puzzle rectangle's X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/commitdiff_plain/047f95bce523792e6e0f633262e62102c867a595 In the Java front end, don't try to guess the puzzle rectangle's width and height by assuming mirror symmetry within the containing applet area. Instead, use the proper width and height as given back by the C sizing function. (In particular, this fixes a bug where the non-blanked puzzle area appeared too tall by the height of the menu bar, probably as a result of confusing PuzzleApplet.getHeight() with PuzzlePanel.getHeight(). But the mirroring approach was conceptually wrong anyway.) git-svn-id: svn://svn.tartarus.org/sgt/puzzles@9022 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/PuzzleApplet.java b/PuzzleApplet.java index b796aa4..305bae0 100644 --- a/PuzzleApplet.java +++ b/PuzzleApplet.java @@ -297,16 +297,22 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB { String text = runtime.cstring(arg2); if (text.equals("")) text = " "; System.out.println("status '" + text + "'"); - statusBar.setText(text); break; + statusBar.setText(text); + break; case 1: gg = pp.backBuffer.createGraphics(); - if (arg2 != 0 || arg3 != 0) { + if (arg2 != 0 || arg3 != 0 || + arg2 + xarg2 != getWidth() || + arg3 + xarg3 != getHeight()) { + int left = arg2, right = arg2 + xarg2; + int top = arg3, bottom = arg3 + xarg3; + int width = getWidth(), height = getHeight(); gg.setColor(Color.black); - gg.fillRect(0, 0, arg2, getHeight()); - gg.fillRect(0, 0, getWidth(), arg3); - gg.fillRect(getWidth() - arg2, 0, arg2, getHeight()); - gg.fillRect(0, getHeight() - arg3, getWidth(), arg3); - gg.setClip(arg2, arg3, getWidth()-2*arg2, getHeight()-2*arg3); + gg.fillRect(0, 0, left, height); + gg.fillRect(right, 0, width-right, height); + gg.fillRect(0, 0, width, top); + gg.fillRect(0, bottom, width, height-bottom); + gg.setClip(left, top, right-left, bottom-top); } break; case 2: gg.dispose(); pp.repaint(); break; diff --git a/nestedvm.c b/nestedvm.c index 9381b6c..c859526 100644 --- a/nestedvm.c +++ b/nestedvm.c @@ -35,7 +35,7 @@ struct frontend { struct timeval last_time; config_item *cfg; int cfg_which, cfgret; - int ox, oy; + int ox, oy, w, h; }; static frontend *_fe; @@ -61,6 +61,7 @@ void nestedvm_status_bar(void *handle, char *text) void nestedvm_start_draw(void *handle) { frontend *fe = (frontend *)handle; + _call_java(5, 0, fe->w, fe->h); _call_java(4, 1, fe->ox, fe->oy); } @@ -218,6 +219,8 @@ int jcallback_resize(int width, int height) midend_size(fe->me, &x, &y, TRUE); fe->ox = (width - x) / 2; fe->oy = (height - y) / 2; + fe->w = x; + fe->h = y; midend_force_redraw(fe->me); return 0; }