anchor.diff:      canvas = new Gl2DCanvas(0, 0, half1, height);
   
       // Create button.
  -    button = new fl.Button(half1, 0, half2, 40, 'Recompile!');
  -    button.box = fl.FLAT_BOX;
  -    button.color = fl.WHITE;
  -    button.labelsize = 20;
  -    button.onCallback.listen((_) => compile());
  +    status = new fl.Box(half1, 0, half2, 40, '');
  +    status.box = fl.FLAT_BOX;
  +    status.color = fl.WHITE;
  +    status.labelsize = 20;
  +    status.onCallback.listen((_) => compile());
   
       // Create editor.
  -    editor = new fl.TextEditor(half1, button.h(), half2, height - button.h());
  +    editor = new fl.TextEditor(half1, status.h(), half2, height - status.h());
       editor.box = fl.FLAT_BOX;
       editor.cursorStyle = fl.TextDisplay.SIMPLE_CURSOR;
       editor.cursorColor = fl.rgbColor(64);
  
positive.code:   /// Fragment shader editor
    fl.TextEditor editor;
  
    /// Recompile button
    fl.Button button;
  
    /// Text buffer for the editor
    fl.TextBuffer buffer;
  
negative.code:     // Setup buffer.
      buffer = new fl.TextBuffer();
      buffer.onModify.listen((data) {
        compile();
      });
  
      // Bind status to compileStatus stream.
      canvas.compileState.listen((status) {
        if (status) {
          setStatus('Shader is correct', false);
        } else {
          setStatus('Failed to compile shader', true);
        }
      });
  
  