blob: 5b5198bf56f47dc308da36e8a94955f112e1990b [file] [log] [blame]
// Copyright (c) 2012 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 UI_GFX_GTK_PRESERVE_WINDOW_H_
#define UI_GFX_GTK_PRESERVE_WINDOW_H_
#include <atk/atk.h>
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include "ui/gfx/gfx_export.h"
// GtkFixed creates an X window when realized and destroys an X window
// when unrealized. GtkPreserveWindow allows overrides this
// behaviour. When preserve is set (via gtk_preserve_window_set_preserve),
// the X window is only destroyed when the widget is destroyed.
G_BEGIN_DECLS
#define GTK_TYPE_PRESERVE_WINDOW \
(gtk_preserve_window_get_type())
#define GTK_PRESERVE_WINDOW(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_PRESERVE_WINDOW, \
GtkPreserveWindow))
#define GTK_PRESERVE_WINDOW_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_PRESERVE_WINDOW, \
GtkPreserveWindowClass))
#define GTK_IS_PRESERVE_WINDOW(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_PRESERVE_WINDOW))
#define GTK_IS_PRESERVE_WINDOW_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_PRESERVE_WINDOW))
#define GTK_PRESERVE_WINDOW_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_PRESERVE_WINDOW, \
GtkPreserveWindowClass))
typedef struct _GtkPreserveWindow GtkPreserveWindow;
typedef struct _GtkPreserveWindowClass GtkPreserveWindowClass;
struct _GtkPreserveWindow {
// Parent class.
GtkFixed fixed;
};
struct _GtkPreserveWindowClass {
GtkFixedClass parent_class;
};
GFX_EXPORT GType gtk_preserve_window_get_type() G_GNUC_CONST;
GFX_EXPORT GtkWidget* gtk_preserve_window_new();
// Whether or not we should preserve associated windows as the widget
// is realized or unrealized.
GFX_EXPORT gboolean gtk_preserve_window_get_preserve(GtkPreserveWindow* widget);
GFX_EXPORT void gtk_preserve_window_set_preserve(GtkPreserveWindow* widget,
gboolean value);
// Whether or not someone else will gdk_window_resize the GdkWindow associated
// with this widget (needed by the GPU process to synchronize resizing
// with swapped between front and back buffer).
GFX_EXPORT void gtk_preserve_window_delegate_resize(GtkPreserveWindow* widget,
gboolean delegate);
// Provide a function to return an AtkObject* when calls to get_accessible
// are made on this widget. The parameter |userdata| will be passed to the
// factory function.
GFX_EXPORT void gtk_preserve_window_set_accessible_factory(
GtkPreserveWindow* widget,
AtkObject* (*factory)(void* userdata),
gpointer userdata);
G_END_DECLS
#endif // UI_GFX_GTK_PRESERVE_WINDOW_H_