diff --git a/src/add-ons/decorators/SATDecorator/SATWindow.cpp b/src/add-ons/decorators/SATDecorator/SATWindow.cpp index 80e5a47f6c..bc12edf0a5 100644 --- a/src/add-ons/decorators/SATDecorator/SATWindow.cpp +++ b/src/add-ons/decorators/SATDecorator/SATWindow.cpp @@ -794,37 +794,36 @@ SATWindow::_RestoreOriginalSize(bool stayBelowMouse) int32 buttons; fDesktop->GetLastMouseState(&mousePosition, &buttons); SATDecorator* decorator = GetDecorator(); - if (decorator) { - BRect tabRect = decorator->TabRect(); - if (mousePosition.y < tabRect.bottom - && mousePosition.x <= frame.right + decorator->BorderWidth() +1 - && mousePosition.x >= frame.left + decorator->BorderWidth()) { - // verify mouse stays on the tab - float deltaX = 0; - if (tabRect.right < mousePosition.x) - deltaX = mousePosition.x - tabRect.right + 20; - else if (tabRect.left > mousePosition.x) - deltaX = mousePosition.x - tabRect.left - 20; - fDesktop->MoveWindowBy(fWindow, deltaX, 0); - } else { - // verify mouse stays on the border - float deltaX = 0; - float deltaY = 0; - BRect newFrame = fWindow->Frame(); - if (x != 0 && mousePosition.x > frame.left - && mousePosition.x > newFrame.right) { - deltaX = mousePosition.x - newFrame.right; - if (mousePosition.x > frame.right) - deltaX -= mousePosition.x - frame.right; - } - if (y != 0 && mousePosition.y > frame.top - && mousePosition.y > newFrame.bottom) { - deltaY = mousePosition.y - newFrame.bottom; - if (mousePosition.y > frame.bottom) - deltaY -= mousePosition.y - frame.bottom; - } - - fDesktop->MoveWindowBy(fWindow, deltaX, deltaY); + if (decorator == NULL) + return; + BRect tabRect = decorator->TabRect(); + if (mousePosition.y < tabRect.bottom + && mousePosition.x <= frame.right + decorator->BorderWidth() +1 + && mousePosition.x >= frame.left + decorator->BorderWidth()) { + // verify mouse stays on the tab + float deltaX = 0; + if (tabRect.right < mousePosition.x) + deltaX = mousePosition.x - tabRect.right + 20; + else if (tabRect.left > mousePosition.x) + deltaX = mousePosition.x - tabRect.left - 20; + fDesktop->MoveWindowBy(fWindow, deltaX, 0); + } else { + // verify mouse stays on the border + float deltaX = 0; + float deltaY = 0; + BRect newFrame = fWindow->Frame(); + if (x != 0 && mousePosition.x > frame.left + && mousePosition.x > newFrame.right) { + deltaX = mousePosition.x - newFrame.right; + if (mousePosition.x > frame.right) + deltaX -= mousePosition.x - frame.right; } + if (y != 0 && mousePosition.y > frame.top + && mousePosition.y > newFrame.bottom) { + deltaY = mousePosition.y - newFrame.bottom; + if (mousePosition.y > frame.bottom) + deltaY -= mousePosition.y - frame.bottom; + } + fDesktop->MoveWindowBy(fWindow, deltaX, deltaY); } }