summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/browser_window_gtk.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-18 20:58:42 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-18 20:58:42 +0000
commitd030f229428505194e71c2ff6ffd05922fa1d2e2 (patch)
tree339f8cfbaf77b990c618a3fc5afb12087bbc4a42 /chrome/browser/ui/gtk/browser_window_gtk.cc
parent09d50362dfdeff4d370c6897890186bd48c5c63d (diff)
downloadchromium_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.cc24
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