Index: chrome/browser/ui/panels/panel_browser_window_gtk.h |
diff --git a/chrome/browser/ui/panels/panel_browser_window_gtk.h b/chrome/browser/ui/panels/panel_browser_window_gtk.h |
index f08b047c029715afa3987820ea74f2b6e5375de5..5f5c9d650344ec581ecc131c7e1a188ff7a8c36c 100644 |
--- a/chrome/browser/ui/panels/panel_browser_window_gtk.h |
+++ b/chrome/browser/ui/panels/panel_browser_window_gtk.h |
@@ -41,6 +41,7 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk, |
virtual void SaveWindowPosition() OVERRIDE; |
virtual void SetGeometryHints() OVERRIDE; |
virtual bool UseCustomFrame() OVERRIDE; |
+ virtual void OnSizeChanged(int width, int height) OVERRIDE; |
// Overridden from NativePanel: |
virtual void ShowPanel() OVERRIDE; |
@@ -76,12 +77,12 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk, |
virtual void SetRestoredHeight(int height) OVERRIDE; |
private: |
- // Resize the window as specified by the bounds. Move the window to the |
- // specified location only if "move" is true. We set the window gravity to be |
- // GDK_GRAVITY_SOUTH_EAST which means the window is anchored to the bottom |
- // right corner on resize, making it unnecessary to move the window if the |
- // bottom right corner is unchanged, for example when we minimize to the |
- // bottom. Moving can actually result in the wrong behavior. |
+ // Resize the window as specified by the bounds. |
+ // Panels use window gravity of GDK_GRAVITY_SOUTH_EAST which means the |
+ // window is anchored to the bottom right corner on resize, making it |
+ // unnecessary to move the window if the bottom right corner is unchanged. |
+ // For example, when we minimize to the bottom, moving can actually |
+ // result in the wrong behavior. |
// - Say window is 100x100 with x,y=900,900 on a 1000x1000 screen. |
// - Say you minimize the window to 100x3 and move it to 900,997 to keep it |
// anchored to the bottom. |
@@ -89,7 +90,9 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk, |
// the move will take the window off screen and it won't honor the |
// request. |
// - When resize finally happens, you'll have a 100x3 window a x,y=900,900. |
- void SetBoundsImpl(const gfx::Rect& bounds, bool move); |
+ // Set |force_move| to true to force a move regardless. Otherwise, the |
+ // window is only moved if the bottom right corner is being changed. |
+ void SetBoundsImpl(const gfx::Rect& bounds, bool force_move); |
// MessageLoop::Observer implementation: |
virtual void WillProcessEvent(GdkEvent* event) OVERRIDE; |
@@ -156,6 +159,10 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk, |
// been minimized. |
int restored_height_; |
+ // False until the window has been allocated and the size of browser window |
+ // frame around the content is known. |
+ bool non_client_area_size_known_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PanelBrowserWindowGtk); |
}; |