--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/awt/awt_util.h Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,251 @@
+/*
+ * Copyright 1995-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+#ifndef _AWT_UTIL_H_
+#define _AWT_UTIL_H_
+
+#ifndef HEADLESS
+#ifndef XAWT
+#include <Xm/VendorSEP.h>
+#include <Xm/VendorSP.h>
+#endif
+#include "gdefs.h"
+
+typedef struct ConvertEventTimeAndModifiers {
+ jlong when;
+ jint modifiers;
+} ConvertEventTimeAndModifiers;
+
+Boolean awt_util_focusIsOnMenu(Display *display);
+int32_t awt_util_sendButtonClick(Display *display, Window window);
+
+Widget awt_util_createWarningWindow(Widget parent, char *warning);
+void awt_util_show(Widget w);
+void awt_util_hide(Widget w);
+void awt_util_enable(Widget w);
+void awt_util_disable(Widget w);
+void awt_util_reshape(Widget w, jint x, jint y, jint wd, jint ht);
+void awt_util_mapChildren(Widget w, void (*func)(Widget,void *),
+ int32_t applyToSelf, void *data);
+int32_t awt_util_setCursor(Widget w, Cursor c);
+void awt_util_convertEventTimeAndModifiers
+ (XEvent *event, ConvertEventTimeAndModifiers *output);
+Widget awt_WidgetAtXY(Widget root, Position x, Position y);
+char *awt_util_makeWMMenuItem(char *target, Atom protocol);
+Cardinal awt_util_insertCallback(Widget w);
+void awt_util_consumeAllXEvents(Widget widget);
+void awt_util_cleanupBeforeDestroyWidget(Widget widget);
+void awt_util_debug_init();
+Time awt_util_getCurrentServerTime();
+jlong awt_util_nowMillisUTC();
+jlong awt_util_nowMillisUTC_offset(Time server_offset);
+void awt_util_do_wheel_scroll(Widget scrolled_window, jint scrollType,
+ jint scrollAmt, jint wheelAmt);
+Widget awt_util_get_scrollbar_to_scroll(Widget window);
+
+
+typedef struct _EmbeddedFrame {
+ Widget embeddedFrame;
+ Window frameContainer;
+ jobject javaRef;
+ Boolean eventSelectedPreviously;
+ struct _EmbeddedFrame * next;
+ struct _EmbeddedFrame * prev;
+} EmbeddedFrame;
+
+void awt_util_addEmbeddedFrame(Widget embeddedFrame, jobject javaRef);
+void awt_util_delEmbeddedFrame(Widget embeddedFrame);
+Boolean awt_util_processEventForEmbeddedFrame(XEvent *ev);
+
+#define WITH_XERROR_HANDLER(f) do { \
+ XSync(awt_display, False); \
+ xerror_code = Success; \
+ xerror_saved_handler = XSetErrorHandler(f); \
+} while (0)
+
+/* Convenience macro for handlers to use */
+#define XERROR_SAVE(err) do { \
+ xerror_code = (err)->error_code; \
+} while (0)
+
+#define RESTORE_XERROR_HANDLER do { \
+ XSync(awt_display, False); \
+ XSetErrorHandler(xerror_saved_handler); \
+} while (0)
+
+#define EXEC_WITH_XERROR_HANDLER(f, code) do { \
+ WITH_XERROR_HANDLER(f); \
+ do { \
+ code; \
+ } while (0); \
+ RESTORE_XERROR_HANDLER; \
+} while (0)
+
+/*
+ * Since X reports protocol errors asynchronously, we often need to
+ * install an error handler that acts like a callback. While that
+ * specialized handler is installed we save original handler here.
+ */
+extern XErrorHandler xerror_saved_handler;
+
+/*
+ * A place for error handler to report the error code.
+ */
+extern unsigned char xerror_code;
+
+extern int xerror_ignore_bad_window(Display *dpy, XErrorEvent *err);
+
+#endif /* !HEADLESS */
+
+#ifndef INTERSECTS
+#define INTERSECTS(r1_x1,r1_x2,r1_y1,r1_y2,r2_x1,r2_x2,r2_y1,r2_y2) \
+!((r2_x2 <= r1_x1) ||\
+ (r2_y2 <= r1_y1) ||\
+ (r2_x1 >= r1_x2) ||\
+ (r2_y1 >= r1_y2))
+#endif
+
+#ifndef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+#ifndef MAX
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+struct DPos {
+ int32_t x;
+ int32_t y;
+ int32_t mapped;
+ void *data;
+ void *peer;
+ int32_t echoC;
+};
+
+extern jobject awtJNI_GetCurrentThread(JNIEnv *env);
+extern void awtJNI_ThreadYield(JNIEnv *env);
+
+#ifndef HEADLESS
+extern Widget prevWidget;
+#endif /* !HEADLESS */
+
+/*
+ * Functions for accessing fields by name and signature
+ */
+
+JNIEXPORT jobject JNICALL
+JNU_GetObjectField(JNIEnv *env, jobject self, const char *name,
+ const char *sig);
+
+JNIEXPORT jboolean JNICALL
+JNU_SetObjectField(JNIEnv *env, jobject self, const char *name,
+ const char *sig, jobject val);
+
+JNIEXPORT jlong JNICALL
+JNU_GetLongField(JNIEnv *env, jobject self, const char *name);
+
+JNIEXPORT jint JNICALL
+JNU_GetIntField(JNIEnv *env, jobject self, const char *name);
+
+JNIEXPORT jboolean JNICALL
+JNU_SetIntField(JNIEnv *env, jobject self, const char *name, jint val);
+
+JNIEXPORT jboolean JNICALL
+JNU_SetLongField(JNIEnv *env, jobject self, const char *name, jlong val);
+
+JNIEXPORT jboolean JNICALL
+JNU_GetBooleanField(JNIEnv *env, jobject self, const char *name);
+
+JNIEXPORT jboolean JNICALL
+JNU_SetBooleanField(JNIEnv *env, jobject self, const char *name, jboolean val);
+
+JNIEXPORT jint JNICALL
+JNU_GetCharField(JNIEnv *env, jobject self, const char *name);
+
+#ifndef HEADLESS
+#ifdef __solaris__
+extern Widget awt_util_getXICStatusAreaWindow(Widget w);
+#else
+int32_t awt_util_getIMStatusHeight(Widget vw);
+XVaNestedList awt_util_getXICStatusAreaList(Widget w);
+Widget awt_util_getXICStatusAreaWindow(Widget w);
+#endif
+
+
+
+
+#ifdef __linux__
+typedef struct _XmImRefRec {
+ Cardinal num_refs; /* Number of referencing widgets. */
+ Cardinal max_refs; /* Maximum length of refs array. */
+ Widget* refs; /* Array of referencing widgets. */
+ XtPointer **callbacks;
+} XmImRefRec, *XmImRefInfo;
+
+typedef struct _PreeditBufferRec {
+ unsigned short length;
+ wchar_t *text;
+ XIMFeedback *feedback;
+ int32_t caret;
+ XIMCaretStyle style;
+} PreeditBufferRec, *PreeditBuffer;
+
+typedef struct _XmImXICRec {
+ struct _XmImXICRec *next; /* Links all have the same XIM. */
+ XIC xic; /* The XIC. */
+ Window focus_window; /* Cached information about the XIC. */
+ XIMStyle input_style; /* ...ditto... */
+ int32_t status_width; /* ...ditto... */
+ int32_t preedit_width; /* ...ditto... */
+ int32_t sp_height; /* ...ditto... */
+ Boolean has_focus; /* Does this XIC have keyboard focus. */
+ Boolean anonymous; /* Do we have exclusive rights to this XIC. */
+ XmImRefRec widget_refs; /* Widgets referencing this XIC. */
+ struct _XmImXICRec **source; /* Original source of shared XICs. */
+ PreeditBuffer preedit_buffer;
+} XmImXICRec, *XmImXICInfo;
+
+typedef struct _XmImShellRec {
+ /* per-Shell fields. */
+ Widget im_widget; /* Dummy widget to make intrinsics behave. */
+ Widget current_widget; /* Widget whose visual we're matching. */
+
+ /* per <Shell,XIM> fields. */
+ XmImXICInfo shell_xic; /* For PER_SHELL sharing policy. */
+ XmImXICInfo iclist; /* All known XICs for this <XIM,Shell>. */
+} XmImShellRec, *XmImShellInfo;
+
+typedef struct {
+ /* per-Display fields. */
+ XContext current_xics; /* Map widget -> current XmImXICInfo. */
+
+ /* per-XIM fields. */
+ XIM xim; /* The XIM. */
+ XIMStyles *styles; /* XNQueryInputStyle result. */
+ XmImRefRec shell_refs; /* Shells referencing this XIM. */
+} XmImDisplayRec, *XmImDisplayInfo;
+
+#endif
+#endif /* !HEADLESS */
+#endif /* _AWT_UTIL_H_ */