Chromium Code Reviews| Index: chrome/browser/ui/cocoa/autofill/autofill_details_container.mm |
| diff --git a/chrome/browser/ui/cocoa/autofill/autofill_details_container.mm b/chrome/browser/ui/cocoa/autofill/autofill_details_container.mm |
| index ee4ee05773429ab1bbd2400f997e1dab892a649e..c3bda1916b76c3dfc6e34a389c708b6d3317be3e 100644 |
| --- a/chrome/browser/ui/cocoa/autofill/autofill_details_container.mm |
| +++ b/chrome/browser/ui/cocoa/autofill/autofill_details_container.mm |
| @@ -10,6 +10,7 @@ |
| #include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h" |
| #import "chrome/browser/ui/cocoa/autofill/autofill_bubble_controller.h" |
| #import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" |
| +#import "chrome/browser/ui/cocoa/info_bubble_view.h" |
| @implementation AutofillDetailsContainer |
| @@ -157,14 +158,6 @@ |
| } |
| } |
| -- (NSPoint)anchorPointFromView:(NSView*)view { |
| - // All math done in window coordinates, since views might be flipped. |
| - NSRect viewRect = [view convertRect:[view bounds] toView:nil]; |
| - NSPoint anchorPoint = |
| - NSMakePoint(NSMidX(viewRect), NSMinY(viewRect)); |
| - return [[view window] convertBaseToScreen:anchorPoint]; |
| -} |
| - |
| - (void)errorBubbleWindowWillClose:(NSNotification*)notification { |
| DCHECK_EQ([notification object], [errorBubbleController_ window]); |
| @@ -195,7 +188,24 @@ |
| // Compute anchor point (in window coords - views might be flipped). |
| NSRect viewRect = [field convertRect:[field bounds] toView:nil]; |
| - NSPoint anchorPoint = NSMakePoint(NSMidX(viewRect), NSMinY(viewRect)); |
| + |
| + // If a bubble at maximum size with a left-aligned edge would exceed the |
| + // window width, align the right edge of bubble and view. In all other |
| + // cases, left edge of bubble and view align. |
|
Ilya Sherman
2013/11/22 04:32:10
nit: Suggested rephrasing: "In all other cases, al
groby-ooo-7-16
2013/11/22 04:50:15
Done.
|
| + NSPoint anchorPoint; |
| + if ((NSMinX(viewRect) + [errorBubbleController_ maxWidth]) > |
|
Ilya Sherman
2013/11/22 04:32:10
Hmm, why maxWidth rather than actual width?
groby-ooo-7-16
2013/11/22 04:50:15
If I don't do that, the arrow/edge alignment might
Ilya Sherman
2013/11/22 04:58:09
I see, that makes sense. Mind recording that as c
groby-ooo-7-16
2013/11/22 19:12:13
Done.
|
| + NSWidth([parentWindow frame])) { |
|
Ilya Sherman
2013/11/22 04:32:10
Hmm, you're comparing a coordinate to a width. Is
groby-ooo-7-16
2013/11/22 04:50:15
That is indeed intentional. The viewRect is in the
Ilya Sherman
2013/11/22 04:58:09
Ah, I missed that the viewRect was guaranteed to b
groby-ooo-7-16
2013/11/22 19:12:13
Done.
|
| + anchorPoint = NSMakePoint(NSMaxX(viewRect), NSMinY(viewRect)); |
| + [[errorBubbleController_ bubble] setArrowLocation:info_bubble::kTopRight]; |
| + [[errorBubbleController_ bubble] setAlignment: |
| + info_bubble::kAlignRightEdgeToAnchorEdge]; |
| + |
| + } else { |
| + anchorPoint = NSMakePoint(NSMinX(viewRect), NSMinY(viewRect)); |
| + [[errorBubbleController_ bubble] setArrowLocation:info_bubble::kTopLeft]; |
| + [[errorBubbleController_ bubble] setAlignment: |
| + info_bubble::kAlignLeftEdgeToAnchorEdge]; |
| + } |
| [errorBubbleController_ setAnchorPoint: |
| [parentWindow convertBaseToScreen:anchorPoint]]; |