Chromium Code Reviews| Index: base/message_pump_gtk.h |
| diff --git a/base/message_pump_gtk.h b/base/message_pump_gtk.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e93fb9a7c69da5f6898c375d8ca32989d24baaf3 |
| --- /dev/null |
| +++ b/base/message_pump_gtk.h |
| @@ -0,0 +1,74 @@ |
| +// Copyright (c) 2011 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 BASE_MESSAGE_PUMP_GTK_H_ |
| +#define BASE_MESSAGE_PUMP_GTK_H_ |
| +#pragma once |
| + |
| +#include "base/message_pump_glib.h" |
| + |
| +typedef union _GdkEvent GdkEvent; |
| + |
| +namespace base { |
| + |
| +// The documentation for this class is in message_pump_glib.h |
| +class MessagePumpObserver { |
| + public: |
| + // This method is called before processing a message. |
| + virtual void WillProcessEvent(GdkEvent* event) = 0; |
| + |
| + // This method is called after processing a message. |
| + virtual void DidProcessEvent(GdkEvent* event) = 0; |
| + |
| + protected: |
| + virtual ~MessagePumpObserver() {} |
| +}; |
| + |
| +// The documentation for this class is in message_pump_glib.h |
| +// |
| +// The nested loop is exited by either posting a quit, or returning false |
| +// from Dispatch. |
| +class MessagePumpDispatcher { |
| + public: |
| + // Dispatches the event. If true is returned processing continues as |
| + // normal. If false is returned, the nested loop exits immediately. |
| + virtual bool Dispatch(GdkEvent* event) = 0; |
| + |
| + protected: |
| + virtual ~MessagePumpDispatcher() {} |
| +}; |
| + |
| +// This class implements a message-pump for dispatching GTK events. |
| +class MessagePumpGtk : public MessagePumpGlib { |
|
Evan Martin
2011/06/24 17:33:15
Do these need BASE_API to not break the components
sadrul
2011/06/24 18:12:54
It doesn't seem to be necessary at the moment, alt
|
| + public: |
| + MessagePumpGtk(); |
| + virtual ~MessagePumpGtk(); |
| + |
| + // Dispatch an available GdkEvent. Essentially this allows a subclass to do |
| + // some task before/after calling the default handler (EventDispatcher). |
| + virtual void DispatchEvents(GdkEvent* event); |
|
Evan Martin
2011/06/24 17:33:15
Why virtual? Do we actually override this anywhere
sadrul
2011/06/24 18:12:54
Not at the moment. Removed 'virtual'.
|
| + |
| + private: |
| + // Overridden from MessagePumpGlib |
| + virtual bool RunOnce(GMainContext* context, bool block) OVERRIDE; |
| + |
| + // Invoked from EventDispatcher. Notifies all observers we're about to |
| + // process an event. |
| + void WillProcessEvent(GdkEvent* event); |
| + |
| + // Invoked from EventDispatcher. Notifies all observers we processed an |
| + // event. |
| + void DidProcessEvent(GdkEvent* event); |
| + |
| + // Callback prior to gdk dispatching an event. |
| + static void EventDispatcher(GdkEvent* event, void* data); |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MessagePumpGtk); |
| +}; |
| + |
| +typedef MessagePumpGtk MessagePumpForUI; |
| + |
| +} // namespace base |
| + |
| +#endif // BASE_MESSAGE_PUMP_GTK_H_ |