diff options
Diffstat (limited to 'app/active_window_watcher_x.h')
-rw-r--r-- | app/active_window_watcher_x.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/active_window_watcher_x.h b/app/active_window_watcher_x.h new file mode 100644 index 0000000..2ea524e --- /dev/null +++ b/app/active_window_watcher_x.h @@ -0,0 +1,48 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef APP_ACTIVE_WINDOW_WATCHER_X_H_ +#define APP_ACTIVE_WINDOW_WATCHER_X_H_ + +#include <gdk/gdk.h> + +#include "base/basictypes.h" +#include "base/observer_list.h" +#include "base/singleton.h" + +// This is a helper class that is used to keep track of which window the X +// window manager thinks is active. Add an Observer to listener for changes to +// the active window. +class ActiveWindowWatcherX { + public: + class Observer { + public: + virtual void ActiveWindowChanged(GdkWindow* active_window) = 0; + }; + + static void AddObserver(Observer* observer); + static void RemoveObserver(Observer* observer); + + private: + friend struct DefaultSingletonTraits<ActiveWindowWatcherX>; + + ActiveWindowWatcherX(); + + void Init(); + + // Sends a notification out through the NotificationService that the active + // window has changed. + void NotifyActiveWindowChanged(); + + // Callback for PropertyChange XEvents. + static GdkFilterReturn OnWindowXEvent(GdkXEvent* xevent, + GdkEvent* event, + gpointer window_watcher); + + ObserverList<Observer> observers_; + + DISALLOW_COPY_AND_ASSIGN(ActiveWindowWatcherX); +}; + +#endif // APP_ACTIVE_WINDOW_WATCHER_X_H_ |