| | 130 | |
|---|
| | 131 | |
|---|
| | 132 | #pragma mark - |
|---|
| | 133 | |
|---|
| | 134 | - (void)snapToScreenEdgeAndDisplay:(BOOL)display animate:(BOOL)animate { |
|---|
| | 135 | NSRect visibleFrame, frame; |
|---|
| | 136 | CGFloat gravity = 40.0; |
|---|
| | 137 | |
|---|
| | 138 | frame = [self frame]; |
|---|
| | 139 | visibleFrame = [[self screen] visibleFrame]; |
|---|
| | 140 | |
|---|
| | 141 | if(fabs(visibleFrame.origin.x - frame.origin.x) <= gravity) |
|---|
| | 142 | frame.origin.x = visibleFrame.origin.x; |
|---|
| | 143 | if(fabs(visibleFrame.origin.x - (frame.origin.x + frame.size.width)) <= gravity) |
|---|
| | 144 | frame.origin.x += visibleFrame.origin.x - (frame.origin.x + frame.size.width); |
|---|
| | 145 | if(fabs((visibleFrame.origin.x + visibleFrame.size.width) - frame.origin.x) <= gravity) |
|---|
| | 146 | frame.origin.x = visibleFrame.origin.x + visibleFrame.size.width; |
|---|
| | 147 | if(fabs((visibleFrame.origin.x + visibleFrame.size.width) - (frame.origin.x + frame.size.width)) <= gravity) |
|---|
| | 148 | frame.origin.x += (visibleFrame.origin.x + visibleFrame.size.width) - (frame.origin.x + frame.size.width); |
|---|
| | 149 | |
|---|
| | 150 | if(fabs(visibleFrame.origin.y - frame.origin.y) <= gravity) |
|---|
| | 151 | frame.origin.y = visibleFrame.origin.y; |
|---|
| | 152 | if(fabs(visibleFrame.origin.y - (frame.origin.y + frame.size.height)) <= gravity) |
|---|
| | 153 | frame.origin.y += visibleFrame.origin.y - (frame.origin.y + frame.size.height); |
|---|
| | 154 | if(fabs((visibleFrame.origin.y + visibleFrame.size.height) - frame.origin.y) <= gravity) |
|---|
| | 155 | frame.origin.y = visibleFrame.origin.y + visibleFrame.size.height; |
|---|
| | 156 | if(fabs((visibleFrame.origin.y + visibleFrame.size.height) - (frame.origin.y + frame.size.height)) <= gravity) |
|---|
| | 157 | frame.origin.y += (visibleFrame.origin.y + visibleFrame.size.height) - (frame.origin.y + frame.size.height); |
|---|
| | 158 | |
|---|
| | 159 | [self setFrame:frame display:display animate:animate]; |
|---|
| | 160 | } |
|---|
| | 161 | |
|---|