QmlProfiler: Update selection also when only model changes

Previously, if you selected an event with the same ID from a different
model the rangeDetails wouldn't be updated. Now modelId and itemId can only
be updated together and a single signal is emitted for that. This signal is
then used to update the details.

Change-Id: Ie1e971f5ac8c041b49df347fa0fbb401d5422766
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Ulf Hermann
2014-03-26 11:47:52 +01:00
parent fa1b5eebb5
commit 84eadb01c8
4 changed files with 42 additions and 49 deletions

View File

@@ -307,9 +307,7 @@ void TimelineRenderer::manageClicked()
} else {
setSelectionLocked(false);
}
setSelectedModel(m_currentSelection.modelIndex);
setSelectedItem(m_currentSelection.eventIndex);
selectFromId(m_currentSelection.modelIndex, m_currentSelection.eventIndex);
}
void TimelineRenderer::manageHovered(int mouseX, int mouseY)
@@ -362,10 +360,8 @@ void TimelineRenderer::manageHovered(int mouseX, int mouseY)
m_currentSelection.endTime = itemEnd;
m_currentSelection.row = row;
m_currentSelection.modelIndex = modelIndex;
if (!m_selectionLocked) {
setSelectedModel(modelIndex);
setSelectedItem(i);
}
if (!m_selectionLocked)
selectFromId(modelIndex, i);
return;
}
}
@@ -457,8 +453,7 @@ void TimelineRenderer::selectNext()
}
}
setSelectedModel(candidateModelIndex);
setSelectedItem(itemIndex);
selectFromId(candidateModelIndex, itemIndex);
}
void TimelineRenderer::selectPrev()
@@ -510,8 +505,7 @@ void TimelineRenderer::selectPrev()
}
}
setSelectedModel(candidateModelIndex);
setSelectedItem(itemIndex);
selectFromId(candidateModelIndex, itemIndex);
}
int TimelineRenderer::nextItemFromId(int modelIndex, int eventId) const
@@ -553,20 +547,21 @@ int TimelineRenderer::prevItemFromId(int modelIndex, int eventId) const
return -1;
}
void TimelineRenderer::selectNextFromId(int modelIndex, int eventId)
void TimelineRenderer::selectFromId(int modelIndex, int eventIndex)
{
int eventIndex = nextItemFromId(modelIndex, eventId);
if (eventIndex != -1) {
if (modelIndex != m_selectedModel || eventIndex != m_selectedItem) {
setSelectedModel(modelIndex);
setSelectedItem(eventIndex);
emit selectionChanged(modelIndex, eventIndex);
}
}
void TimelineRenderer::selectNextFromId(int modelIndex, int eventId)
{
selectFromId(modelIndex, nextItemFromId(modelIndex, eventId));
}
void TimelineRenderer::selectPrevFromId(int modelIndex, int eventId)
{
int eventIndex = prevItemFromId(modelIndex, eventId);
if (eventIndex != -1) {
setSelectedModel(modelIndex);
setSelectedItem(eventIndex);
}
selectFromId(modelIndex, prevItemFromId(modelIndex, eventId));
}