aboutsummaryrefslogtreecommitdiff
path: root/PuzzleApplet.java
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2010-11-06 18:14:41 +0000
committerSimon Tatham <anakin@pobox.com>2010-11-06 18:14:41 +0000
commit9cfc61c5f7f64ed382e946a2c69d6857eb494590 (patch)
treee451a428d960aa848d862636d3bbdf5aa13355da /PuzzleApplet.java
parent4d41f0f7178a55dfdce23e5bd5b9c3095ca1754e (diff)
downloadpuzzles-9cfc61c5f7f64ed382e946a2c69d6857eb494590.zip
puzzles-9cfc61c5f7f64ed382e946a2c69d6857eb494590.tar.gz
puzzles-9cfc61c5f7f64ed382e946a2c69d6857eb494590.tar.bz2
puzzles-9cfc61c5f7f64ed382e946a2c69d6857eb494590.tar.xz
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.) [originally from svn r9022]
Diffstat (limited to 'PuzzleApplet.java')
-rw-r--r--PuzzleApplet.java20
1 files changed, 13 insertions, 7 deletions
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;