docs: def _on_config_value_changed(self, renderer, path, new_value, config_m, list_store):
          """Callback handling a change of a config value
  
          :param Gtk.CellRenderer renderer: Cell renderer showing the shortcut
          :param path: Path of shortcuts within the list store
          :param ConfigModel config_m: The config model that is to be changed
          :param Gtk.ListStore list_store: The list store that is to be changed
          """
          config_key = list_store[int(path)][self.KEY_STORAGE_ID]
          old_value = config_m.get_current_config_value(config_key, use_preliminary=True)
  
          if old_value == new_value:
              return
  
          # Try to maintain the correct data type, which is extracted from the old value
          if isinstance(old_value, bool):
              if new_value in ["True", "true"]:
                  new_value = True
              elif new_value in ["False", "false"]:
                  new_value = False
              else:
                  logger.warning("'{}' must be a boolean value".format(config_key))
                  new_value = old_value
          elif isinstance(old_value, (int, float)):
              try:
                  new_value = int(new_value)
              except ValueError:
                  try:
                      new_value = float(new_value)
                  except ValueError:
                      logger.warning("'{}' must be a numeric value".format(config_key))
                      new_value = old_value
  
          config_m.set_preliminary_config_value(config_key, new_value)