Floor the tabLength to avoid drawing bugs. Add the leftover of this cutting to the last tab.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38511 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
af89e8106a
commit
743d974099
@ -352,17 +352,25 @@ SATStacking::_AdjustWindowTabs()
|
|||||||
|
|
||||||
const SATWindowList& stackedWindows = area->WindowList();
|
const SATWindowList& stackedWindows = area->WindowList();
|
||||||
|
|
||||||
float tabBarLength = frame.Width();
|
int stackCount = stackedWindows.CountItems();
|
||||||
|
float titleBarLength = frame.Width();
|
||||||
ASSERT(tabBarLength > 0);
|
ASSERT(titleBarLength > 0);
|
||||||
float tabLength = tabBarLength / stackedWindows.CountItems();
|
// floor to avoid drawing issues
|
||||||
|
float tabLength = floorf(titleBarLength / stackCount);
|
||||||
|
// the part that we lost due to the floor
|
||||||
|
float roundingError = 0;
|
||||||
if (tabLength > kMaxTabWidth)
|
if (tabLength > kMaxTabWidth)
|
||||||
tabLength = kMaxTabWidth;
|
tabLength = kMaxTabWidth;
|
||||||
|
else
|
||||||
|
roundingError = titleBarLength - stackCount * tabLength;
|
||||||
|
|
||||||
float location = 0;
|
float location = 0;
|
||||||
for (int i = 0; i < stackedWindows.CountItems(); i++) {
|
for (int i = 0; i < stackCount; i++) {
|
||||||
SATWindow* window = stackedWindows.ItemAt(i);
|
SATWindow* window = stackedWindows.ItemAt(i);
|
||||||
window->SetStackedTabLength(tabLength - 1);
|
if (i == stackCount - 1)
|
||||||
|
window->SetStackedTabLength(tabLength - 1 + roundingError);
|
||||||
|
else
|
||||||
|
window->SetStackedTabLength(tabLength - 1);
|
||||||
|
|
||||||
desktop->SetWindowTabLocation(window->GetWindow(), location);
|
desktop->SetWindowTabLocation(window->GetWindow(), location);
|
||||||
location += tabLength;
|
location += tabLength;
|
||||||
|
Loading…
Reference in New Issue
Block a user