Changeset View
Changeset View
Standalone View
Standalone View
layers.cpp
Show First 20 Lines • Show All 528 Lines • ▼ Show 20 Line(s) | 528 | for (int i = stacking.size() - 1; | |||
---|---|---|---|---|---|
529 | i >= 0; | 529 | i >= 0; | ||
530 | ) { | 530 | ) { | ||
531 | AbstractClient *current = qobject_cast<AbstractClient*>(stacking[i]); | 531 | AbstractClient *current = qobject_cast<AbstractClient*>(stacking[i]); | ||
532 | if (!current || !current->isTransient()) { | 532 | if (!current || !current->isTransient()) { | ||
533 | --i; | 533 | --i; | ||
534 | continue; | 534 | continue; | ||
535 | } | 535 | } | ||
536 | int i2 = -1; | 536 | int i2 = -1; | ||
537 | Client *ccurrent = qobject_cast<Client*>(current); | | |||
538 | if (ccurrent && ccurrent->groupTransient()) { | | |||
539 | if (ccurrent->group()->members().count() > 0) { | | |||
540 | // find topmost client this one is transient for | 537 | // find topmost client this one is transient for | ||
541 | for (i2 = stacking.size() - 1; | 538 | for (i2 = stacking.size() - 1; i2 >= 0; --i2) { | ||
542 | i2 >= 0; | | |||
543 | --i2) { | | |||
544 | if (stacking[ i2 ] == stacking[ i ]) { | | |||
545 | i2 = -1; // don't reorder, already the topmost in the group | | |||
546 | break; | | |||
547 | } | | |||
548 | AbstractClient *c2 = qobject_cast<AbstractClient*>(stacking[ i2 ]); | | |||
549 | if (!c2) { | | |||
550 | continue; | | |||
551 | } | | |||
552 | if (c2->hasTransient(current, true) | | |||
553 | && keepTransientAbove(c2, current)) | | |||
554 | break; | | |||
555 | } | | |||
556 | } // else i2 remains pointing at -1 | | |||
557 | } else { | | |||
558 | for (i2 = stacking.size() - 1; | | |||
559 | i2 >= 0; | | |||
560 | --i2) { | | |||
561 | AbstractClient *c2 = qobject_cast<AbstractClient*>(stacking[ i2 ]); | 539 | AbstractClient *c2 = qobject_cast<AbstractClient *>(stacking[i2]); | ||
562 | if (!c2) { | 540 | if (!c2) { | ||
563 | continue; | 541 | continue; | ||
564 | } | 542 | } | ||
565 | if (c2 == current) { | 543 | if (c2 == current) { | ||
566 | i2 = -1; // don't reorder, already on top of its mainwindow | 544 | i2 = -1; // Don't reorder, already on top of its main window. | ||
567 | break; | 545 | break; | ||
568 | } | 546 | } | ||
569 | if (c2 == current->transientFor() | 547 | if (c2->hasTransient(current, true) | ||
570 | && keepTransientAbove(c2, current)) | 548 | && keepTransientAbove(c2, current)) { | ||
571 | break; | 549 | break; | ||
572 | } | 550 | } | ||
573 | } | 551 | } | ||
574 | if (i2 == -1) { | 552 | if (i2 == -1) { | ||
575 | --i; | 553 | --i; | ||
576 | continue; | 554 | continue; | ||
577 | } | 555 | } | ||
578 | stacking.removeAt(i); | 556 | stacking.removeAt(i); | ||
▲ Show 20 Lines • Show All 234 Lines • Show Last 20 Lines |