537 | | BRect frame = screen.Frame(); |
538 | | if (where.x == frame.left || where.x == frame.right |
539 | | || where.y == frame.top || where.y == frame.bottom) { |
540 | | // cursor is on screen edge |
541 | | if (window->Frame().Contains(where)) |
542 | | window->Activate(); |
| 540 | BRect screenFrame = screen.Frame(); |
| 541 | |
| 542 | if (where.x == screenFrame.left || where.x == screenFrame.right |
| 543 | || where.y == screenFrame.top || where.y == screenFrame.bottom){ |
| 544 | |
| 545 | BRect windowFrame = window->Frame(); // The actual Workspaces app frame |
| 546 | BPoint center(screenFrame.right / 2.0, screenFrame.bottom / 2.0); |
| 547 | BRect topLeftQuad = BRect(BPoint(0,0), center); |
| 548 | BRect topRightQuad = BRect(BPoint(center.x,0), |
| 549 | BPoint(screenFrame.right, center.y)); |
| 550 | BRect bottomLeftQuad = BRect(BPoint(0,center.y), |
| 551 | BPoint(center.x,screenFrame.bottom)); |
| 552 | |
| 553 | float fOffset = kScreenBorderOffset / 2.0; // kScreenBorderOffset is twice what we need. |
| 554 | |
| 555 | // If pointer is in top-left quad... |
| 556 | if (topLeftQuad.Contains(where)){ |
| 557 | if (BRect( |
| 558 | windowFrame.left - fOffset, |
| 559 | windowFrame.top - fOffset, |
| 560 | windowFrame.right, |
| 561 | windowFrame.bottom |
| 562 | ).Contains(where)) |
| 563 | window->Activate(); |
| 564 | } |
| 565 | else if (topRightQuad.Contains(where)){ |
| 566 | if (BRect( |
| 567 | windowFrame.left, |
| 568 | windowFrame.top - fOffset, |
| 569 | windowFrame.right + fOffset, |
| 570 | windowFrame.bottom |
| 571 | ).Contains(where)) |
| 572 | window->Activate(); |
| 573 | } |
| 574 | else if (bottomLeftQuad.Contains(where)){ |
| 575 | if (BRect( |
| 576 | windowFrame.left - fOffset, |
| 577 | windowFrame.top, |
| 578 | windowFrame.right, |
| 579 | windowFrame.bottom + fOffset |
| 580 | ).Contains(where)) |
| 581 | window->Activate(); |
| 582 | } |
| 583 | else { |
| 584 | if (BRect( |
| 585 | windowFrame.left, |
| 586 | windowFrame.top, |
| 587 | windowFrame.right + fOffset, |
| 588 | windowFrame.bottom + fOffset |
| 589 | ).Contains(where)) |
| 590 | window->Activate(); |
| 591 | } |