Refreshes content of frozen cells that are currently selected

        If there is no selection, the cell at the cursor is updated.

        Parameters
        ----------
        selection: Selection, defaults to None
        \tIf not None then use this selection instead of the grid selection

def refresh_selected_frozen_cells(self, selection=None):
        """Refreshes content of frozen cells that are currently selected

        If there is no selection, the cell at the cursor is updated.

        Parameters
        ----------
        selection: Selection, defaults to None
        \tIf not None then use this selection instead of the grid selection

        """

        if selection is None:
            selection = self.grid.selection

        # Add cursor to empty selection

        if not selection:
            selection.cells.append(self.grid.actions.cursor[:2])

        cell_attributes = self.grid.code_array.cell_attributes

        refreshed_keys = []

        for attr_selection, tab, attr_dict in cell_attributes:
            if tab == self.grid.actions.cursor[2] and \
               "frozen" in attr_dict and attr_dict["frozen"]:
                # Only single cells are allowed for freezing
                skey = attr_selection.cells[0]
                if skey in selection:
                    key = tuple(list(skey) + [tab])
                    if key not in refreshed_keys and \
                       cell_attributes[key]["frozen"]:
                        self.refresh_frozen_cell(key)
                        refreshed_keys.append(key)

        cell_attributes._attr_cache.clear()
        cell_attributes._table_cache.clear()