diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-10 18:10:56 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-10 18:10:56 +0000 |
commit | f258e60737294d275711c83fe85351a227970759 (patch) | |
tree | d9c4d849384d69d4c1ad56dfeb33a42194798ae7 /chrome/browser/gtk | |
parent | 0f22837496378b11c7276ef0420a862e7c7c5128 (diff) | |
download | chromium_src-f258e60737294d275711c83fe85351a227970759.zip chromium_src-f258e60737294d275711c83fe85351a227970759.tar.gz chromium_src-f258e60737294d275711c83fe85351a227970759.tar.bz2 |
Work around a compiz bug where starting chrome and trying to maximize
would render the window as maximized, but the window state wouldn't be
set properly.
TEST=Start chrome, maximize chrome, close chrome. Restart chrome. Window
controls in compiz should be the maximized version and there should
be no rounded corners.
Review URL: http://codereview.chromium.org/165186
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22929 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 17 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.h | 4 |
2 files changed, 15 insertions, 6 deletions
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index f5ddd75..fee9b62 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -390,7 +390,8 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) #endif frame_cursor_(NULL), is_active_(true), - last_click_time_(0) { + last_click_time_(0), + maximize_after_show_(false) { use_custom_frame_.Init(prefs::kUseCustomChromeFrame, browser_->profile()->GetPrefs(), this); @@ -640,8 +641,11 @@ void BrowserWindowGtk::Show() { } #endif - // If we are not already visible, this will just show the window. gtk_window_present(window_); + if (maximize_after_show_) { + gtk_window_maximize(window_); + maximize_after_show_ = false; + } } void BrowserWindowGtk::SetBounds(const gfx::Rect& bounds) { @@ -1221,10 +1225,11 @@ void BrowserWindowGtk::SetGeometryHints() { geometry.min_height = 1; gtk_window_set_geometry_hints(window_, NULL, &geometry, GDK_HINT_MIN_SIZE); - if (browser_->GetSavedMaximizedState()) - gtk_window_maximize(window_); - else - gtk_window_unmaximize(window_); + // If we call gtk_window_maximize followed by gtk_window_present, compiz gets + // confused and maximizes the window, but doesn't set the + // GDK_WINDOW_STATE_MAXIMIZED bit. So instead, we keep track of whether to + // maximize and call it after gtk_window_present. + maximize_after_show_ = browser_->GetSavedMaximizedState(); gfx::Rect bounds = browser_->GetSavedWindowBounds(); // We don't blindly call SetBounds here, that sets a forced position diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h index c5e0ed3..92a1cf3 100644 --- a/chrome/browser/gtk/browser_window_gtk.h +++ b/chrome/browser/gtk/browser_window_gtk.h @@ -357,6 +357,10 @@ class BrowserWindowGtk : public BrowserWindow, guint32 last_click_time_; gfx::Point last_click_position_; + // If true, maximize the window after we call BrowserWindow::Show for the + // first time. This is to work around a compiz bug. + bool maximize_after_show_; + DISALLOW_COPY_AND_ASSIGN(BrowserWindowGtk); }; |