910e62b5创建于 1月15日历史提交
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_GTK_X_GTK_EVENT_LOOP_X11_H_
#define UI_GTK_X_GTK_EVENT_LOOP_X11_H_

#include "base/memory/raw_ptr.h"
#include "ui/base/glib/glib_integers.h"
#include "ui/base/glib/scoped_gsignal.h"
#include "ui/gtk/gtk_compat.h"

namespace gtk {

class GtkEventLoopX11 {
 public:
  GtkEventLoopX11();
  ~GtkEventLoopX11();

  GtkEventLoopX11(const GtkEventLoopX11&) = delete;
  GtkEventLoopX11& operator=(const GtkEventLoopX11&) = delete;

 private:
  // This state is only used on GTK4.
  ScopedGSignal signal_;

  // Only called on GTK3.
  static void DispatchGdkEvent(GdkEvent* gdk_event, gpointer);

  // Only called on GTK4.
  gboolean OnEvent(GdkSurface* surface, GdkEvent* event);
};

}  // namespace gtk

#endif  // UI_GTK_X_GTK_EVENT_LOOP_X11_H_