Index: ui/base/x/active_window_watcher_x.cc |
diff --git a/ui/base/x/active_window_watcher_x.cc b/ui/base/x/active_window_watcher_x.cc |
index 01c4a88ccc786c611229532659ba660fc34a49a7..53459100f4638748bd48686f9a00623133ce2cf9 100644 |
--- a/ui/base/x/active_window_watcher_x.cc |
+++ b/ui/base/x/active_window_watcher_x.cc |
@@ -2,11 +2,16 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "ui/base/x/active_window_watcher_x.h" |
+ |
#include <X11/Xlib.h> |
+ |
+#include "ui/base/x/x11_util.h" |
+ |
+#if defined(TOOLKIT_USES_GTK) |
Daniel Erat
2011/09/21 20:27:08
nit: move this above the x11_util.h include
sadrul
2011/09/21 21:56:18
I just realized that this file shouldn't be necess
|
#include <gdk/gdk.h> |
#include <gdk/gdkx.h> |
- |
-#include "ui/base/x/active_window_watcher_x.h" |
+#endif |
namespace ui { |
@@ -29,9 +34,14 @@ void ActiveWindowWatcherX::RemoveObserver(Observer* observer) { |
// static |
bool ActiveWindowWatcherX::WMSupportsActivation() { |
+#if defined(TOOLKIT_USES_GTK) |
return gdk_x11_screen_supports_net_wm_hint( |
gdk_screen_get_default(), |
gdk_atom_intern_static_string("_NET_ACTIVE_WINDOW")); |
+#else |
+ NOTIMPLEMENTED(); |
+ return false; |
Daniel Erat
2011/09/21 20:27:08
true may be a better default for us; WMs that don'
|
+#endif |
} |
ActiveWindowWatcherX::ActiveWindowWatcherX() { |
@@ -42,6 +52,7 @@ ActiveWindowWatcherX::~ActiveWindowWatcherX() { |
} |
void ActiveWindowWatcherX::Init() { |
+#if defined(TOOLKIT_USES_GTK) |
GdkAtom net_active_window = |
gdk_atom_intern_static_string("_NET_ACTIVE_WINDOW"); |
g_net_active_window_atom = gdk_x11_atom_to_xatom_for_display( |
@@ -57,6 +68,7 @@ void ActiveWindowWatcherX::Init() { |
static_cast<GdkEventMask>(gdk_window_get_events(root) | |
GDK_PROPERTY_CHANGE_MASK)); |
gdk_window_add_filter(NULL, &ActiveWindowWatcherX::OnWindowXEventThunk, this); |
+#endif |
} |
void ActiveWindowWatcherX::NotifyActiveWindowChanged() { |
@@ -68,8 +80,8 @@ void ActiveWindowWatcherX::NotifyActiveWindowChanged() { |
long unsigned int num_items = 0, remaining_bytes = 0; |
unsigned char* property = NULL; |
- XGetWindowProperty(gdk_x11_get_default_xdisplay(), |
- GDK_WINDOW_XID(gdk_get_default_root_window()), |
+ XGetWindowProperty(GetXDisplay(), |
+ GetX11RootWindow(), |
g_net_active_window_atom, |
0, // offset into property data to read |
1, // length to get in 32-bit quantities |
@@ -81,6 +93,7 @@ void ActiveWindowWatcherX::NotifyActiveWindowChanged() { |
&remaining_bytes, |
&property); |
+#if defined(TOOLKIT_USES_GTK) |
// Check that the property was set and contained a single 32-bit item (we |
// don't check that remaining_bytes is 0, though, as XFCE's window manager |
// seems to actually store two values in the property for some unknown |
@@ -93,10 +106,13 @@ void ActiveWindowWatcherX::NotifyActiveWindowChanged() { |
observers_, |
ActiveWindowChanged(active_window)); |
} |
+#endif |
+ |
if (property) |
XFree(property); |
} |
+#if defined(TOOLKIT_USES_GTK) |
GdkFilterReturn ActiveWindowWatcherX::OnWindowXEvent(GdkXEvent* xevent, |
GdkEvent* event) { |
XEvent* xev = static_cast<XEvent*>(xevent); |
@@ -108,5 +124,6 @@ GdkFilterReturn ActiveWindowWatcherX::OnWindowXEvent(GdkXEvent* xevent, |
return GDK_FILTER_CONTINUE; |
} |
+#endif |
} // namespace ui |