summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mg_selection.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/mg_selection.c b/mg_selection.c
index 8e30945..b9798f8 100644
--- a/mg_selection.c
+++ b/mg_selection.c
@@ -647,6 +647,13 @@ mgParts
mgSelection::SelParts(bool distinct, bool deepsort) const
{
assert(m_level<ordersize());
+ mgParts result;
+ if (inItem())
+ {
+ // only use tracks.id
+ result += Keys[ordersize()-1]->Parts(m_db,distinct);
+ return result;
+ }
mgKey *high = Keys[m_level];
mgListItem* highitem = 0;
if (high->Type()!=keyGdUnique)
@@ -654,7 +661,6 @@ mgSelection::SelParts(bool distinct, bool deepsort) const
highitem = high->get();
high->set(0);
}
- mgParts result;
result.orderByCount = m_orderByCount;
for (unsigned int i=0;i<ordersize();i++)
{
@@ -960,10 +966,16 @@ bool mgSelection::enter (unsigned int position)
{
setPosition(position);
position = gotoPosition(); // reload adjusted position
- Key(m_level)->set (listitems[position]);
- mgDebug(5,"enter:level=%d,set to %s",m_level,getCurrentValue().c_str());
- IncLevel();
- refreshValues();
+ if (inItems())
+ {
+ mgListItem *item=Key(m_level)->get();
+ IncLevel();
+ Key(m_level)->set(item);
+ mgListItem *i2=Key(m_level)->get();
+ i2->set(item->value(),item->unique_id(),1);
+ }
+ else
+ IncLevel();
position = 0;
if (empty())
break;