Make menus accessible from the keyboard in the Gtk front-end.
[sgt/puzzles] / PuzzleApplet.java
index 4c9928d..f401ecf 100644 (file)
@@ -33,6 +33,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
     private JLabel statusBar;
     private PuzzlePanel pp;
     private Runtime runtime;
+    private String[] puzzle_args;
     private Graphics2D  gg;
     private Timer timer;
     private int xarg1, xarg2, xarg3;
@@ -172,9 +173,22 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     runtimeCall("jcallback_timer_func", new int[0]);
                 }
             });
+           String gameid;
+           try {
+               gameid = getParameter("game_id");
+           } catch (java.lang.NullPointerException ex) {
+               gameid = null;
+           }
+           if (gameid == null) {
+               puzzle_args = null;
+           } else {
+               puzzle_args = new String[2];
+               puzzle_args[0] = "puzzle";
+               puzzle_args[1] = gameid;
+           }
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
-                    runtime.start();
+                    runtime.start(puzzle_args);
                     runtime.execute();
                 }
             });
@@ -368,8 +382,6 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     int asc = fm.getAscent(), desc = fm.getDescent();
                     if ((xarg3 & ALIGN_VCENTRE) != 0)
                         xarg2 += asc - (asc+desc)/2;
-                    else
-                        xarg2 += asc;
                     int wid = fm.stringWidth(text);
                     if ((xarg3 & ALIGN_HCENTRE) != 0)
                         xarg1 -= wid / 2;
@@ -476,11 +488,13 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
         }
 
         public void createBackBuffer(int w, int h, Color bg) {
-            backBuffer = new BufferedImage(w,h, BufferedImage.TYPE_3BYTE_BGR);
-            Graphics g = backBuffer.createGraphics();
-            g.setColor(bg);
-            g.fillRect(0, 0, w, h);
-            g.dispose();
+           if (w > 0 && h > 0) {
+               backBuffer = new BufferedImage(w,h, BufferedImage.TYPE_3BYTE_BGR);
+               Graphics g = backBuffer.createGraphics();
+               g.setColor(bg);
+               g.fillRect(0, 0, w, h);
+               g.dispose();
+           }
         }
 
         protected void paintComponent(Graphics g) {
@@ -588,7 +602,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     break;
                 case C_CHOICES:
                     JComboBox jcm = (JComboBox)cc.component;
-                    runtimeCall("jcallback_config_set_boolean", new int[] {cc.configItemPointer, jcm.getSelectedIndex()});
+                    runtimeCall("jcallback_config_set_choice", new int[] {cc.configItemPointer, jcm.getSelectedIndex()});
                     break;
                 }
             }