summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/chrome_browser_window.mm14
-rw-r--r--chrome/browser/cocoa/tab_window_controller.h3
-rw-r--r--chrome/browser/cocoa/tab_window_controller.mm6
3 files changed, 23 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/chrome_browser_window.mm b/chrome/browser/cocoa/chrome_browser_window.mm
index 20d3c77..c4b503b 100644
--- a/chrome/browser/cocoa/chrome_browser_window.mm
+++ b/chrome/browser/cocoa/chrome_browser_window.mm
@@ -329,4 +329,18 @@ namespace {
return shouldHideTitle_;
}
+// This method is called whenever a window is moved in order to ensure it fits
+// on the screen. We cannot always handle resizes without breaking, so we
+// prevent frame constraining in those cases.
+- (NSRect)constrainFrameRect:(NSRect)frame toScreen:(NSScreen*)screen {
+ // Do not constrain the frame rect if our delegate says no. In this case,
+ // return the original (unconstrained) frame.
+ id delegate = [self delegate];
+ if ([delegate respondsToSelector:@selector(shouldConstrainFrameRect)] &&
+ ![delegate shouldConstrainFrameRect])
+ return frame;
+
+ return [super constrainFrameRect:frame toScreen:screen];
+}
+
@end
diff --git a/chrome/browser/cocoa/tab_window_controller.h b/chrome/browser/cocoa/tab_window_controller.h
index 04346e5..c9c2589 100644
--- a/chrome/browser/cocoa/tab_window_controller.h
+++ b/chrome/browser/cocoa/tab_window_controller.h
@@ -49,6 +49,9 @@
- (void)removeOverlayAfterDelay:(NSTimeInterval)delay;
- (NSWindow*)overlayWindow;
+// Returns YES if it is ok to constrain the window's frame to fit the screen.
+- (BOOL)shouldConstrainFrameRect;
+
// A collection of methods, stubbed out in this base class, that provide
// the implementation of tab dragging based on whatever model is most
// appropriate.
diff --git a/chrome/browser/cocoa/tab_window_controller.mm b/chrome/browser/cocoa/tab_window_controller.mm
index b627214..c8e881c 100644
--- a/chrome/browser/cocoa/tab_window_controller.mm
+++ b/chrome/browser/cocoa/tab_window_controller.mm
@@ -125,6 +125,12 @@
return overlayWindow_;
}
+- (BOOL)shouldConstrainFrameRect {
+ // If we currently have an overlay window, do not attempt to change the
+ // window's size, as our overlay window doesn't know how to resize properly.
+ return overlayWindow_ == nil;
+}
+
- (BOOL)canReceiveFrom:(TabWindowController*)source {
// subclass must implement
NOTIMPLEMENTED();