SATGroup* SATWindow::GetGroup() { if (!fGroupCookie->GetGroup()) _InitGroup(); // manually set the tabs of the single window WindowArea* windowArea = fGroupCookie->GetWindowArea(); if (!PositionManagedBySAT() && windowArea) { BRect frame = CompleteWindowFrame(); windowArea->LeftTopCrossing()->VerticalTab()->SetPosition(frame.left); windowArea->LeftTopCrossing()->HorizontalTab()->SetPosition(frame.top); windowArea->RightBottomCrossing()->VerticalTab()->SetPosition( frame.right); windowArea->RightBottomCrossing()->HorizontalTab()->SetPosition( frame.bottom); } return fGroupCookie->GetGroup(); }
void SATGroup::_TopNeighbours(WindowAreaList& neighbourWindows, WindowArea* parent) { float startPos = parent->LeftTopCrossing()->VerticalTab()->Position(); float endPos = parent->RightTopCrossing()->VerticalTab()->Position(); Tab* tab = parent->LeftTopCrossing()->HorizontalTab(); const CrossingList* crossingList = tab->GetCrossingList(); for (int i = 0; i < crossingList->CountItems(); i++) { Corner* corner = crossingList->ItemAt(i)->LeftTopCorner(); if (corner->status != Corner::kUsed) continue; WindowArea* area = corner->windowArea; float pos1 = area->LeftTopCrossing()->VerticalTab()->Position(); float pos2 = area->RightTopCrossing()->VerticalTab()->Position(); if (pos1 < endPos && pos2 > startPos) neighbourWindows.AddItem(area); if (pos2 > endPos) break; } }