diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 20:58:42 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 20:58:42 +0000 |
commit | d030f229428505194e71c2ff6ffd05922fa1d2e2 (patch) | |
tree | 339f8cfbaf77b990c618a3fc5afb12087bbc4a42 /chrome/browser/ui/gtk/browser_window_gtk.cc | |
parent | 09d50362dfdeff4d370c6897890186bd48c5c63d (diff) | |
download | chromium_src-d030f229428505194e71c2ff6ffd05922fa1d2e2.zip chromium_src-d030f229428505194e71c2ff6ffd05922fa1d2e2.tar.gz chromium_src-d030f229428505194e71c2ff6ffd05922fa1d2e2.tar.bz2 |
make IsActive work as expected for xmonad
BUG=152234
TEST=see bug 152229
Review URL: https://chromiumcodereview.appspot.com/11192048
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162785 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk/browser_window_gtk.cc')
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 24fe60b..df19e4f 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -242,7 +242,7 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) contents_hsplit_(NULL), contents_vsplit_(NULL), frame_cursor_(NULL), - is_active_(!ui::ActiveWindowWatcherX::WMSupportsActivation()), + is_active_(false), show_state_after_show_(ui::SHOW_STATE_DEFAULT), suppress_window_raise_(false), accel_group_(NULL), @@ -555,7 +555,7 @@ void BrowserWindowGtk::DrawCustomFrame(cairo_t* cr, if (theme_provider->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && !browser()->profile()->IsOffTheRecord()) { gfx::CairoCachedSurface* theme_overlay = theme_provider->GetImageNamed( - IsActive() ? IDR_THEME_FRAME_OVERLAY + DrawFrameAsActive() ? IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE).ToCairo(); theme_overlay->SetSource(cr, widget, 0, GetVerticalOffset()); cairo_paint(cr); @@ -570,7 +570,7 @@ int BrowserWindowGtk::GetVerticalOffset() { int BrowserWindowGtk::GetThemeFrameResource() { bool incognito = browser()->profile()->IsOffTheRecord(); int image_name; - if (IsActive()) { + if (DrawFrameAsActive()) { image_name = incognito ? IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; } else { image_name = incognito ? IDR_THEME_FRAME_INCOGNITO_INACTIVE : @@ -692,7 +692,11 @@ void BrowserWindowGtk::Deactivate() { } bool BrowserWindowGtk::IsActive() const { - return is_active_; + if (ui::ActiveWindowWatcherX::WMSupportsActivation()) + return is_active_; + + // This still works even though we don't get the activation notification. + return gtk_window_is_active(window_); } void BrowserWindowGtk::FlashFrame(bool flash) { @@ -1842,7 +1846,7 @@ void BrowserWindowGtk::SetBackgroundColor() { int frame_color_id; if (UsingCustomPopupFrame()) { frame_color_id = ThemeService::COLOR_TOOLBAR; - } else if (IsActive()) { + } else if (DrawFrameAsActive()) { frame_color_id = browser()->profile()->IsOffTheRecord() ? ThemeService::COLOR_FRAME_INCOGNITO : ThemeService::COLOR_FRAME; @@ -2394,6 +2398,16 @@ void BrowserWindowGtk::PlaceBookmarkBar(bool is_floating) { } } +bool BrowserWindowGtk::DrawFrameAsActive() const { + if (ui::ActiveWindowWatcherX::WMSupportsActivation()) + return is_active_; + + // Since we don't get notifications when the active state of the frame + // changes, we can't consistently repaint the frame at the right time. Instead + // we always draw the frame as active. + return true; +} + // static bool BrowserWindowGtk::GetCustomFramePrefDefault() { // Ideally, we'd use the custom frame by default and just fall back on using |