         grid_focus: @defaultGridFocus()
 
     defaultGridFocus: () ->
-        row: 0
-        col: 0
+        focus: {row: 0, col: 0}
+        anchor: {row: 0, col: 0}
         is_across: true
         field_open: "none" # "none" or "number" or "contents"
 

                    if g[row1][col1].open and g[row1][col1].contents != ""
                        @props.requestOp Ot.opEditCellValue \
                            row1, col1, "contents", ""
                    grid_focus.col = col1
                    grid_focus.row = row1
            @setState { grid_focus: grid_focus }

    # Perform an automatic renumbering.

        if grid_focus != null
            c = String.fromCharCode keyCode
            @props.requestOp Ot.opEditCellValue \
                grid_focus.focus.row, grid_focus.focus.col, "contents", c
            if grid_focus.is_across and grid_focus.focus.col < @width() - 1
                grid_focus.focus.col += 1
            else if (not grid_focus.is_across) and grid_focus.focus.row < @height() - 1
                grid_focus.focus.row += 1
        @setState { grid_focus: grid_focus }

    deleteLetter: (keyCode) ->
        grid_focus = Utils.clone @state.grid_focus
        if grid_focus != null
            grid_focus.cell_field = "none"
            row = grid_focus.focus.row
            col = grid_focus.focus.col
            g = @state.puzzle.grid
            if g[row][col].open and g[row][col].contents != ""
                @props.requestOp Ot.opEditCellValue \
                    grid_focus.focus.row, grid_focus.focus.col, "contents", ""
                if grid_focus.is_across and grid_focus.focus.col > 0
                    grid_focus.focus.col -= 1
                else if (not grid_focus.is_across) and grid_focus.focus.row > 0
                    grid_focus.focus.row -= 1
            else
                if grid_focus.is_across
                    row1 = row
