Hi,

I'm having headaches with the fact that converting QCPDataSelection indexes to keys and then the resulting keys to indexes does not lead to equal results:

// This slot is called when the user changed the selection on the plot
void myUI::slot_graphSelectionChanged(const QCPDataSelection &s)
{
      // keys are exclusively integers in my graph
      quint32 start = g->data()->at(s.dataRange().begin())->key;
      quint32 end = g->data()->at(s.dataRange().end()-1)->key;

      setInterval(start,end);
}

// this is used to change the selection, it is either called by the slot or from the outside to change it programmatically
void myUI::setInterval(quint32 start, quint32 end)
{
  // avoid re-emitting signal
  g->blockSignals(true);

  int start_idx = g->findBegin(start);
  int end_idx = g->findBegin(start);

  g->setSelection(QCPDataSelection(QCPDataRange(start_idx,end_idx+1)));
  g->layer()->replot();

  g->blockSignals(false);
}

I notice that whatever method I use (findBegin() / findEnd()) with or without extendedRange, I cannot get back to the original selection indexes got from the slot.

The slot method is doing the job well: the indexes and keys are correct and do match the selection rect of the user.
The setInterval() is causing problems because I can't manage the find() methods to return the same indexes.

Please advise on the correct way to go back and forth from index to key.
Thanks