protected final void SizeChange(int width, int height) {
this.width = width;
this.height = height;
+ root.width = width;
+ root.height = height;
+ root.needs_reflow = true;
abort = true;
long lastResizeTime = System.currentTimeMillis();
lastResizeTimeTop = (int)(lastResizeTime >> 32);
Vec keywatchers = new Vec();
/** When set to true, render() should abort as soon as possible and restart the rendering process */
- volatile boolean abort = false;
+ static volatile boolean abort = false;
/** a solid red 10x10 double buffer */
private DoubleBuffer showRenderBuf = null;
// make sure the root is properly sized
do {
- Box.abort = false;
+ abort = false;
root.reflow();
- } while(Box.abort);
+ } while(abort);
// this is a bit dangerous since we're passing ourselves to another method before subclasses' ctors have run...
backbuffer = Platform.createDoubleBuffer(Platform.getScreenWidth(), Platform.getScreenHeight(), this);
public synchronized void render() {
// if the window size changed as a result of a user action, we have to update the root box's size
- if (root.width != width || root.width != height) {
+ if (root.width != width || root.height != height) {
// since the scar will be moving, dirty the place it used to be
if (scarred) dirty(hscar,
// make sure the root is properly sized
do {
- Box.abort = false;
+ abort = false;
root.reflow();
// update mouseinside and trigger Enter/Leave as a result of box size/position changes
String oldcursor = cursor;
cursor = "default";
root.Move(mousex, mousey, mousex, mousey);
if (!cursor.equals(oldcursor)) syncCursor();
- } while(Box.abort);
+ } while(abort);
if (centerSurfaceOnRender) {
centerSurfaceOnRender = false;
if (y+h > height) h = height - y;
if (w <= 0 || h <= 0) continue;
- root.render(x, y, w, h, backbuffer);
+ root.render(0, 0, x, y, w, h, backbuffer);
// if any area under the scar was repainted, rescar that area
if (scarred && x < hscar + scarPicture.getWidth() &&