/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: set expandtab shiftwidth=2 tabstop=2: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __GTK_XTBIN_H__ #define __GTK_XTBIN_H__ #include #include #include #include #ifdef MOZILLA_CLIENT # include "mozilla/Types.h" # ifdef _IMPL_GTKXTBIN_API # define GTKXTBIN_API(type) MOZ_EXPORT type # else # define GTKXTBIN_API(type) MOZ_IMPORT_API type # endif #else # define GTKXTBIN_API(type) type #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct _XtClient XtClient; struct _XtClient { Display* xtdisplay; Widget top_widget; /* The toplevel widget */ Widget child_widget; /* The embedded widget */ Visual* xtvisual; int xtdepth; Colormap xtcolormap; Window oldwindow; }; #if (GTK_MAJOR_VERSION == 2) typedef struct _GtkXtBin GtkXtBin; typedef struct _GtkXtBinClass GtkXtBinClass; # define GTK_TYPE_XTBIN (gtk_xtbin_get_type()) # define GTK_XTBIN(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_XTBIN, GtkXtBin)) # define GTK_XTBIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_XTBIN, GtkXtBinClass)) # define GTK_IS_XTBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_XTBIN)) # define GTK_IS_XTBIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_XTBIN)) struct _GtkXtBin { GtkSocket gsocket; GdkWindow* parent_window; Display* xtdisplay; /* Xt Toolkit Display */ Window xtwindow; /* Xt Toolkit XWindow */ XtClient xtclient; /* Xt Client for XEmbed */ }; struct _GtkXtBinClass { GtkSocketClass parent_class; }; GTKXTBIN_API(GType) gtk_xtbin_get_type(void); GTKXTBIN_API(GtkWidget*) gtk_xtbin_new(GdkWindow* parent_window, String* f); #endif typedef struct _XtTMRec { XtTranslations translations; /* private to Translation Manager */ XtBoundActions proc_table; /* procedure bindings for actions */ struct _XtStateRec* current_state; /* Translation Manager state ptr */ unsigned long lastEventTime; } XtTMRec, *XtTM; typedef struct _CorePart { Widget self; /* pointer to widget itself */ WidgetClass widget_class; /* pointer to Widget's ClassRec */ Widget parent; /* parent widget */ XrmName xrm_name; /* widget resource name quarkified */ Boolean being_destroyed; /* marked for destroy */ XtCallbackList destroy_callbacks; /* who to call when widget destroyed */ XtPointer constraints; /* constraint record */ Position x, y; /* window position */ Dimension width, height; /* window dimensions */ Dimension border_width; /* window border width */ Boolean managed; /* is widget geometry managed? */ Boolean sensitive; /* is widget sensitive to user events*/ Boolean ancestor_sensitive; /* are all ancestors sensitive? */ XtEventTable event_table; /* private to event dispatcher */ XtTMRec tm; /* translation management */ XtTranslations accelerators; /* accelerator translations */ Pixel border_pixel; /* window border pixel */ Pixmap border_pixmap; /* window border pixmap or NULL */ WidgetList popup_list; /* list of popups */ Cardinal num_popups; /* how many popups */ String name; /* widget resource name */ Screen* screen; /* window's screen */ Colormap colormap; /* colormap */ Window window; /* window ID */ Cardinal depth; /* number of planes in window */ Pixel background_pixel; /* window background pixel */ Pixmap background_pixmap; /* window background pixmap or NULL */ Boolean visible; /* is window mapped and not occluded?*/ Boolean mapped_when_managed; /* map window if it's managed? */ } CorePart; typedef struct _WidgetRec { CorePart core; } WidgetRec, CoreRec; /* Exported functions, used by Xt plugins */ void xt_client_create(XtClient* xtclient, Window embeder, int height, int width); void xt_client_unrealize(XtClient* xtclient); void xt_client_destroy(XtClient* xtclient); void xt_client_init(XtClient* xtclient, Visual* xtvisual, Colormap xtcolormap, int xtdepth); void xt_client_xloop_create(void); void xt_client_xloop_destroy(void); Display* xt_client_get_display(void); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GTK_XTBIN_H__ */