 
         grid_focus = @removeCellField(grid_focus)
 
-        if grid_focus != null and grid_focus.row == row and grid_focus.col == col
+        if grid_focus != null and grid_focus.focus.row == row and grid_focus.focus.col == col
             grid_focus.is_across = not grid_focus.is_across
         else
-            grid_focus.row = row
-            grid_focus.col = col
+            grid_focus.focus.row = row
+            grid_focus.focus.col = col
             grid_focus.is_across = true
         this.setState { grid_focus: grid_focus }
 


    moveGridCursor: (drow, dcol) ->
        if @state.grid_focus
            col1 = @state.grid_focus.col + dcol
            row1 = @state.grid_focus.row + drow
            if col1 >= 0 and col1 < @width() and row1 >= 0 and row1 < @height()
                @setState
                    grid_focus:
                        row: row1
                        col: col1
                        is_across: drow == 0
                        field_open: "none"
                return true

    fixFocus: (puzzle, grid_focus) ->
        if grid_focus == null
            return null
        row = grid_focus.focus.row
        col = grid_focus.focus.col
        row1 = grid_focus.anchor.row
        col1 = grid_focus.anchor.col
        height = puzzle.grid.length
        width = puzzle.grid[0].length
        if not (row >= 0 and row < height and col >= 0 and col < width and \
                row1 >= 0 and row1 < height and col1 >= 0 and col1 < width)
            null
        else
            grid_focus
