Skip to content

Commit f06da8e

Browse files
mhduiydeepin-bot[bot]
authored andcommitted
fix: index multiple item in the tray area
Each item can only be indexed once Issue: linuxdeepin/developer-center#10486
1 parent 1356735 commit f06da8e

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

panels/dock/tray/traysortordermodel.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,11 @@ QStandardItem * TraySortOrderModel::createTrayItem(const QString & name, const Q
319319

320320
void TraySortOrderModel::updateVisualIndexes()
321321
{
322+
for (int i = 0; i < rowCount(); i++) {
323+
auto results = item(i);
324+
results->setData(-1, TraySortOrderModel::VisualIndexRole);
325+
}
326+
322327
// stashed action
323328
// "internal/action-stash-placeholder"
324329
QList<QStandardItem *> results = findItems("internal/action-stash-placeholder");
@@ -332,10 +337,10 @@ void TraySortOrderModel::updateVisualIndexes()
332337
for (const QString & id : std::as_const(m_stashedIds)) {
333338
QList<QStandardItem *> results = findItems(id);
334339
if (results.isEmpty()) continue;
340+
if (results[0]->data(TraySortOrderModel::VisualIndexRole).toInt() != -1) continue;
335341
if (stashPlaceholder == results[0]) continue;
336342
bool itemVisible = results[0]->data(TraySortOrderModel::IsForceDockRole).toBool() || !m_hiddenIds.contains(id);
337343
results[0]->setData(SECTION_STASHED, TraySortOrderModel::SectionTypeRole);
338-
results[0]->setData(itemVisible, TraySortOrderModel::VisibilityRole);
339344
if (itemVisible) {
340345
showStashActionVisible = true;
341346
results[0]->setData(stashedVisualIndex, TraySortOrderModel::VisualIndexRole);
@@ -360,10 +365,10 @@ void TraySortOrderModel::updateVisualIndexes()
360365
for (const QString & id : std::as_const(m_collapsableIds)) {
361366
QList<QStandardItem *> results = findItems(id);
362367
if (results.isEmpty()) continue;
368+
if (results[0]->data(TraySortOrderModel::VisualIndexRole).toInt() != -1) continue;
363369
bool itemVisible = results[0]->data(TraySortOrderModel::IsForceDockRole).toBool() || !m_hiddenIds.contains(id);
364370
results[0]->setData(SECTION_COLLAPSABLE, TraySortOrderModel::SectionTypeRole);
365371
results[0]->setData(itemVisible, TraySortOrderModel::VisibilityRole);
366-
results[0]->setData(-1, TraySortOrderModel::VisualIndexRole);
367372
if (itemVisible) {
368373
toogleCollapseActionVisible = true;
369374
if (!m_collapsed) {
@@ -378,7 +383,6 @@ void TraySortOrderModel::updateVisualIndexes()
378383
results = findItems("internal/action-toggle-collapse");
379384
Q_ASSERT(!results.isEmpty());
380385
results[0]->setData(toogleCollapseActionVisible, TraySortOrderModel::VisibilityRole);
381-
results[0]->setData(-1, TraySortOrderModel::VisualIndexRole);
382386
if (toogleCollapseActionVisible) {
383387
results[0]->setData(currentVisualIndex, TraySortOrderModel::VisualIndexRole);
384388
currentVisualIndex++;
@@ -388,10 +392,10 @@ void TraySortOrderModel::updateVisualIndexes()
388392
for (const QString & id : std::as_const(m_pinnedIds)) {
389393
QList<QStandardItem *> results = findItems(id);
390394
if (results.isEmpty()) continue;
395+
if (results[0]->data(TraySortOrderModel::VisualIndexRole).toInt() != -1) continue;
391396
bool itemVisible = results[0]->data(TraySortOrderModel::IsForceDockRole).toBool() || !m_hiddenIds.contains(id);
392397
results[0]->setData(SECTION_PINNED, TraySortOrderModel::SectionTypeRole);
393398
results[0]->setData(itemVisible, TraySortOrderModel::VisibilityRole);
394-
results[0]->setData(-1, TraySortOrderModel::VisualIndexRole);
395399
if (itemVisible) {
396400
results[0]->setData(currentVisualIndex, TraySortOrderModel::VisualIndexRole);
397401
currentVisualIndex++;
@@ -411,10 +415,10 @@ void TraySortOrderModel::updateVisualIndexes()
411415
for (const QString & id : std::as_const(m_fixedIds)) {
412416
QList<QStandardItem *> results = findItems(id);
413417
if (results.isEmpty()) continue;
418+
if (results[0]->data(TraySortOrderModel::VisualIndexRole).toInt() != -1) continue;
414419
bool itemVisible = results[0]->data(TraySortOrderModel::IsForceDockRole).toBool() || !m_hiddenIds.contains(id);
415420
results[0]->setData(SECTION_FIXED, TraySortOrderModel::SectionTypeRole);
416421
results[0]->setData(itemVisible, TraySortOrderModel::VisibilityRole);
417-
results[0]->setData(-1, TraySortOrderModel::VisualIndexRole);
418422
if (itemVisible) {
419423
results[0]->setData(currentVisualIndex, TraySortOrderModel::VisualIndexRole);
420424
currentVisualIndex++;

0 commit comments

Comments
 (0)