diff options
author | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 23:20:01 +0000 |
---|---|---|
committer | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 23:20:01 +0000 |
commit | 3b3101d8b5ae4f08a16c0b7111da6cad41bbd282 (patch) | |
tree | a5eb7cf42a51869cc8aa1fad7ad6a90cca47fdd8 /libjava/classpath/native/jni/gtk-peer | |
parent | 7e55c49d7d91ef9f09e93c1100119b1ab3652446 (diff) | |
download | ppe42-gcc-3b3101d8b5ae4f08a16c0b7111da6cad41bbd282.tar.gz ppe42-gcc-3b3101d8b5ae4f08a16c0b7111da6cad41bbd282.zip |
Imported GNU Classpath 0.19 + gcj-import-20051115.
* sources.am: Regenerated.
* Makefile.in: Likewise.
* scripts/makemake.tcl: Use glob -nocomplain.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107049 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/native/jni/gtk-peer')
17 files changed, 399 insertions, 178 deletions
diff --git a/libjava/classpath/native/jni/gtk-peer/Makefile.am b/libjava/classpath/native/jni/gtk-peer/Makefile.am index e233357a163..453873037b4 100644 --- a/libjava/classpath/native/jni/gtk-peer/Makefile.am +++ b/libjava/classpath/native/jni/gtk-peer/Makefile.am @@ -55,10 +55,12 @@ libgtkpeer_la_SOURCES = $(gtk_cairo_c_source_files) \ libgtkpeer_la_LIBADD = $(top_builddir)/native/jni/classpath/native_state.lo \ $(top_builddir)/native/jni/classpath/jcl.lo -AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @CAIRO_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ -lXtst +AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @CAIRO_LIBS@ @PANGOFT2_LIBS@ \ + @X_PRE_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ -lX11 -lXtst AM_CPPFLAGS = @CLASSPATH_INCLUDES@ # Just the WARNING_CFLAGS. We cannot use the strict flags since the gtk # headers contain broken prototypes (by design, see gtkitemfactory.h). AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ \ - @GTK_CFLAGS@ @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@ + @GTK_CFLAGS@ @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@ \ + @X_CFLAGS@ diff --git a/libjava/classpath/native/jni/gtk-peer/Makefile.in b/libjava/classpath/native/jni/gtk-peer/Makefile.in index 2b980d7fe2b..77ce68f0458 100644 --- a/libjava/classpath/native/jni/gtk-peer/Makefile.in +++ b/libjava/classpath/native/jni/gtk-peer/Makefile.in @@ -42,10 +42,8 @@ target_triplet = @target@ subdir = native/jni/gtk-peer DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ - $(top_srcdir)/../../config/no-executables.m4 \ - $(top_srcdir)/../../libtool.m4 $(top_srcdir)/m4/accross.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../../libtool.m4 \ + $(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/pkg.m4 \ @@ -173,10 +171,14 @@ CLASSPATH_MODULE = @CLASSPATH_MODULE@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CREATE_ALSA_LIBRARIES_FALSE = @CREATE_ALSA_LIBRARIES_FALSE@ +CREATE_ALSA_LIBRARIES_TRUE = @CREATE_ALSA_LIBRARIES_TRUE@ CREATE_API_DOCS_FALSE = @CREATE_API_DOCS_FALSE@ CREATE_API_DOCS_TRUE = @CREATE_API_DOCS_TRUE@ CREATE_CORE_JNI_LIBRARIES_FALSE = @CREATE_CORE_JNI_LIBRARIES_FALSE@ CREATE_CORE_JNI_LIBRARIES_TRUE = @CREATE_CORE_JNI_LIBRARIES_TRUE@ +CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@ +CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@ CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@ CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@ CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@ @@ -313,6 +315,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ default_toolkit = @default_toolkit@ exec_prefix = @exec_prefix@ +glibjdir = @glibjdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -326,6 +329,7 @@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ +nativelibdir = @nativelibdir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ @@ -391,13 +395,16 @@ libgtkpeer_la_SOURCES = $(gtk_cairo_c_source_files) \ libgtkpeer_la_LIBADD = $(top_builddir)/native/jni/classpath/native_state.lo \ $(top_builddir)/native/jni/classpath/jcl.lo -AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @CAIRO_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ -lXtst +AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @CAIRO_LIBS@ @PANGOFT2_LIBS@ \ + @X_PRE_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ -lX11 -lXtst + AM_CPPFLAGS = @CLASSPATH_INCLUDES@ # Just the WARNING_CFLAGS. We cannot use the strict flags since the gtk # headers contain broken prototypes (by design, see gtkitemfactory.h). AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ \ - @GTK_CFLAGS@ @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@ + @GTK_CFLAGS@ @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@ \ + @X_CFLAGS@ all: all-am diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c index 6f2a1ae7272..cd7eee614b0 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c @@ -65,6 +65,9 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_initStaticState glyphVector_class = (*env)->FindClass (env, "gnu/java/awt/peer/gtk/GdkGlyphVector"); + glyphVector_class = (*env)->NewGlobalRef + (env, glyphVector_class); + glyphVector_ctor = (*env)->GetMethodID (env, glyphVector_class, "<init>", "([D[ILjava/awt/Font;Ljava/awt/font/FontRenderContext;)V"); @@ -98,7 +101,7 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_dispose pfont = (struct peerfont *)NSA_DEL_FONT_PTR (env, self); g_assert (pfont != NULL); if (pfont->layout != NULL) - g_object_unref (pfont->font); + g_object_unref (pfont->layout); if (pfont->font != NULL) g_object_unref (pfont->font); if (pfont->ctx != NULL) diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c index b122eb01544..4aca1cf57b9 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c @@ -116,11 +116,11 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_copyState gdk_gc_copy (g->gc, g_old->gc); if (GDK_STABLE_IS_PIXMAP (g->drawable)) - gdk_pixmap_ref (g->drawable); + g_object_ref (g->drawable); else /* GDK_IS_WINDOW (g->drawable) */ - gdk_window_ref (g->drawable); + g_object_ref (g->drawable); - gdk_colormap_ref (g->cm); + g_object_ref (g->cm); NSA_SET_G_PTR (env, obj, g); @@ -140,8 +140,8 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__II g->drawable = (GdkDrawable *) gdk_pixmap_new (NULL, width, height, gdk_rgb_get_visual ()->depth); - g->cm = gdk_rgb_get_cmap (); - gdk_colormap_ref (g->cm); + g->cm = gdk_rgb_get_colormap (); + g_object_ref (g->cm); g->gc = gdk_gc_new (g->drawable); NSA_SET_G_PTR (env, obj, g); @@ -160,7 +160,7 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_initFromImage pixmap = cp_gtk_image_get_pixmap (env, source); g_assert(pixmap != NULL); - gdk_pixmap_ref (pixmap); + g_object_ref (pixmap); g = (struct graphics *) g_malloc (sizeof (struct graphics)); g->x_offset = g->y_offset = 0; @@ -168,7 +168,7 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_initFromImage g->drawable = (GdkDrawable *)pixmap; g->cm = gdk_drawable_get_colormap (g->drawable); - gdk_colormap_ref (g->cm); + g_object_ref (g->cm); g->gc = gdk_gc_new (g->drawable); NSA_SET_G_PTR (env, obj, g); @@ -193,9 +193,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_initStateUnlocked widget = GTK_WIDGET (ptr); g->drawable = (GdkDrawable *) widget->window; - gdk_window_ref (g->drawable); + g_object_ref (g->drawable); g->cm = gtk_widget_get_colormap (widget); - gdk_colormap_ref (g->cm); + g_object_ref (g->cm); g->gc = gdk_gc_new (g->drawable); gdk_gc_copy (g->gc, widget->style->fg_gc[GTK_STATE_NORMAL]); color = widget->style->fg[GTK_STATE_NORMAL]; @@ -254,14 +254,14 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose XFlush (GDK_DISPLAY ()); - gdk_gc_destroy (g->gc); + g_object_unref (g->gc); if (GDK_STABLE_IS_PIXMAP (g->drawable)) - gdk_pixmap_unref (g->drawable); + g_object_unref (g->drawable); else /* GDK_IS_WINDOW (g->drawable) */ - gdk_window_unref (g->drawable); + g_object_unref (g->drawable); - gdk_colormap_unref (g->cm); + g_object_unref (g->cm); g_free (g); @@ -388,12 +388,12 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea g = (struct graphics *) NSA_GET_G_PTR (env, obj); - gdk_window_copy_area ((GdkWindow *)g->drawable, - g->gc, - x + g->x_offset + dx, y + g->y_offset + dy, - (GdkWindow *)g->drawable, - x + g->x_offset, y + g->y_offset, - width, height); + gdk_draw_drawable ((GdkWindow *)g->drawable, + g->gc, + (GdkWindow *)g->drawable, + x + g->x_offset, y + g->y_offset, + x + g->x_offset + dx, y + g->y_offset + dy, + width, height); gdk_flush (); gdk_threads_leave (); @@ -471,8 +471,8 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor color.blue = blue << 8; g = (struct graphics *) NSA_GET_G_PTR (env, obj); - - gdk_color_alloc (g->cm, &color); + + gdk_colormap_alloc_color (g->cm, &color, TRUE, TRUE); gdk_gc_set_foreground (g->gc, &color); gdk_threads_leave (); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c index fe9980ffd02..7f51e534dd7 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c @@ -58,9 +58,12 @@ void cp_gtk_graphics2d_init_jni (void) { jclass gdkgraphics2d; + JNIEnv *env = cp_gtk_gdk_env(); - gdkgraphics2d = (*cp_gtk_gdk_env())->FindClass (cp_gtk_gdk_env(), - "gnu/java/awt/peer/gtk/GdkGraphics2D"); + gdkgraphics2d = (*env)->FindClass (env, + "gnu/java/awt/peer/gtk/GdkGraphics2D"); + if ((*env)->ExceptionOccurred(env)) + return; initComponentGraphics2DUnlockedID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gdkgraphics2d, "initComponentGraphics2DUnlocked", @@ -777,12 +780,13 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setGradientUnlocked if (peer_is_disposed(env, obj)) return; - if (gr->debug) printf ("setGradient (%f,%f) -> (%f,%f); (%d,%d,%d,%d) -> (%d,%d,%d,%d)\n", - x1, y1, - x2, y2, - r1, g1, b1, a1, - r2, g2, b2, a2); - + if (gr->debug) + printf ("setGradientUnlocked (%f,%f) -> (%f,%f); (%d,%d,%d,%d) -> (%d,%d,%d,%d)\n", + x1, y1, + x2, y2, + r1, g1, b1, a1, + r2, g2, b2, a2); + if (cyclic) surf = cairo_surface_create_similar (gr->surface, CAIRO_FORMAT_ARGB32, 3, 2); else @@ -903,8 +907,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setTexturePixelsUnlocked gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); g_assert (gr != NULL); - if (gr->debug) printf ("setTexturePixels (%d pixels, %dx%d, stride: %d)\n", - (*env)->GetArrayLength (env, jarr), w, h, stride); + if (gr->debug) + printf ("setTexturePixelsUnlocked (%d pixels, %dx%d, stride: %d)\n", + (*env)->GetArrayLength (env, jarr), w, h, stride); if (gr->pattern) cairo_pattern_destroy (gr->pattern); @@ -931,9 +936,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setTexturePixelsUnlocked CAIRO_FORMAT_ARGB32, w, h, stride * 4); g_assert (gr->pattern_surface != NULL); - cairo_pattern_set_extend (gr->pattern, 1); gr->pattern = cairo_pattern_create_for_surface (gr->pattern_surface); g_assert (gr->pattern != NULL); + cairo_pattern_set_extend (gr->pattern, CAIRO_EXTEND_REPEAT); cairo_set_source (gr->cr, gr->pattern); } @@ -957,8 +962,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_drawPixels gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); g_assert (gr != NULL); - if (gr->debug) printf ("drawPixels (%d pixels, %dx%d, stride: %d)\n", - (*env)->GetArrayLength (env, java_pixels), w, h, stride); + if (gr->debug) + printf ("drawPixels (%d pixels, %dx%d, stride: %d)\n", + (*env)->GetArrayLength (env, java_pixels), w, h, stride); native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL); native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL); @@ -1078,10 +1084,11 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMatrixUnlocked g_assert (native_matrix != NULL); g_assert ((*env)->GetArrayLength (env, java_matrix) == 6); - if (gr->debug) printf ("cairo_set_matrix [ %f, %f, %f, %f, %f, %f ]\n", - native_matrix[0], native_matrix[1], - native_matrix[2], native_matrix[3], - native_matrix[4], native_matrix[5]); + if (gr->debug) + printf ("cairo_matrix_init [ %f, %f, %f, %f, %f, %f ]\n", + native_matrix[0], native_matrix[1], + native_matrix[2], native_matrix[3], + native_matrix[4], native_matrix[5]); { cairo_matrix_t mat; @@ -1269,7 +1276,7 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoDrawGlyphVector (*env)->ReleaseFloatArrayElements (env, java_positions, native_positions, 0); (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0); - begin_drawing_operation (env, gr); + begin_drawing_operation (env, gr); cairo_show_glyphs (gr->cr, glyphs, n); end_drawing_operation (env, gr); @@ -1437,7 +1444,8 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetRGBAColorUnlocked draw to a PixBuf, you must exchange the R and B components of your color. */ - if (gr->debug) printf ("cairo_set_source_rgb (%f, %f, %f)\n", r, g, b); + if (gr->debug) + printf ("cairo_set_source_rgba (%f, %f, %f, %f)\n", r, g, b, a); if (gr->drawbuf) cairo_set_source_rgba (gr->cr, b, g, r, a); @@ -1728,7 +1736,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoCurveTo gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); g_assert (gr != NULL); - if (gr->debug) printf ("cairo_curve_to (%f, %f), (%f, %f), (%f, %f)\n", x1, y1, x2, y2, x3, y3); + if (gr->debug) + printf ("cairo_curve_to (%f, %f), (%f, %f), (%f, %f)\n", + x1, y1, x2, y2, x3, y3); cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3); gdk_threads_leave(); @@ -1794,7 +1804,9 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelCurveTo gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); g_assert (gr != NULL); - if (gr->debug) printf ("cairo_rel_curve_to (%f, %f), (%f, %f), (%f, %f)\n", dx1, dy1, dx2, dy2, dx3, dy3); + if (gr->debug) + printf ("cairo_rel_curve_to (%f, %f), (%f, %f), (%f, %f)\n", + dx1, dy1, dx2, dy2, dx3, dy3); cairo_rel_curve_to (gr->cr, dx1, dy1, dx2, dy2, dx3, dy3); gdk_threads_leave(); @@ -1822,7 +1834,8 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRectangle return; } - if (gr->debug) printf ("cairo_rectangle (%f, %f) (%f, %f)\n", x, y, width, height); + if (gr->debug) + printf ("cairo_rectangle (%f, %f) (%f, %f)\n", x, y, width, height); cairo_rectangle (gr->cr, x, y, width, height); gdk_threads_leave(); @@ -1952,7 +1965,7 @@ Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSurfaceSetFilterUnlocked gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); g_assert (gr != NULL); - if (gr->debug) printf ("cairo_surface_set_filter %d\n", filter); + if (gr->debug) printf ("cairo_pattern_set_filter %d\n", filter); switch ((enum java_awt_rendering_hints_filter) filter) { case java_awt_rendering_hints_VALUE_INTERPOLATION_NEAREST_NEIGHBOR: diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c index 918ecfd0a8e..edce3917d68 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c @@ -1,5 +1,5 @@ /* gnu_java_awt_GdkTextLayout.c - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,12 +38,28 @@ #include <jni.h> #include <gtk/gtk.h> +#include <string.h> +#include <pango/pango.h> +#include <pango/pangoft2.h> +#include <pango/pangofc-font.h> +#include <freetype/ftglyph.h> +#include <freetype/ftoutln.h> #include "native_state.h" #include "gdkfont.h" #include "gnu_java_awt_peer_gtk_GdkTextLayout.h" struct state_table *cp_gtk_native_text_layout_state_table; +typedef struct gp +{ + JNIEnv *env; + jobject obj; + double px; + double py; + double sx; + double sy; +} generalpath ; + JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_initStaticState (JNIEnv *env, jclass clazz) @@ -190,3 +206,219 @@ Java_gnu_java_awt_peer_gtk_GdkTextLayout_dispose gdk_threads_leave (); } + +/* GetOutline code follows ****************************/ +/********* Freetype callback functions *****************************/ + +static int _moveTo( FT_Vector* to, + void *p) +{ + JNIEnv *env; + jobject obj; + jclass cls; + jmethodID method; + jvalue values[2]; + generalpath *path = (generalpath *) p; + + env = path->env; + obj = path->obj; + + values[0].f = (jfloat)(to->x * path->sx + path->px); + values[1].f = (jfloat)(to->y * path->sy + path->py); + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "moveTo", "(FF)V"); + (*env)->CallVoidMethodA(env, obj, method, values ); + + return 0; +} + +static int _lineTo( FT_Vector* to, + void *p) +{ + JNIEnv *env; + jobject obj; + jclass cls; + jmethodID method; + jvalue values[2]; + generalpath *path = (generalpath *) p; + + env = path->env; + obj = path->obj; + values[0].f = (jfloat)(to->x * path->sx + path->px); + values[1].f = (jfloat)(to->y * path->sy + path->py); + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "lineTo", "(FF)V"); + (*env)->CallVoidMethodA(env, obj, method, values ); + + return 0; +} + +static int _quadTo( FT_Vector* cp, + FT_Vector* to, + void *p) +{ + JNIEnv *env; + jobject obj; + jclass cls; + jmethodID method; + jvalue values[4]; + generalpath *path = (generalpath *) p; + + env = path->env; + obj = path->obj; + values[0].f = (jfloat)(cp->x * path->sx + path->px); + values[1].f = (jfloat)(cp->y * path->sy + path->py); + values[2].f = (jfloat)(to->x * path->sx + path->px); + values[3].f = (jfloat)(to->y * path->sy + path->py); + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "quadTo", "(FFFF)V"); + (*env)->CallVoidMethodA(env, obj, method, values ); + + return 0; +} + +static int _curveTo( FT_Vector* cp1, + FT_Vector* cp2, + FT_Vector* to, + void *p) +{ + JNIEnv *env; + jobject obj; + jclass cls; + jmethodID method; + jvalue values[6]; + generalpath *path = (generalpath *) p; + + env = path->env; + obj = path->obj; + values[0].f = (jfloat)(cp1->x * path->sx + path->px); + values[1].f = (jfloat)(cp1->y * path->sy + path->py); + values[2].f = (jfloat)(cp2->x * path->sx + path->px); + values[3].f = (jfloat)(cp2->y * path->sy + path->py); + values[4].f = (jfloat)(to->x * path->sx + path->px); + values[5].f = (jfloat)(to->y * path->sy + path->py); + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "curveTo", "(FFFFFF)V"); + (*env)->CallVoidMethodA(env, obj, method, values ); + + return 0; +} + + +JNIEXPORT jobject JNICALL +Java_gnu_java_awt_peer_gtk_GdkTextLayout_getOutline + (JNIEnv *env, jobject obj, jobject transform) +{ + struct textlayout *tl; + generalpath *path; + jobject gp; + GSList *current_run; + PangoLayoutLine *current_line; + FT_Outline_Funcs ftCallbacks = + { + _moveTo, + _lineTo, + _quadTo, + _curveTo, + 0, + 0 + }; + PangoLayoutIter* layoutIterator; + + gdk_threads_enter (); + + tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, obj); + g_assert(tl != NULL); + g_assert(tl->pango_layout != NULL); + + path = g_malloc0 (sizeof (generalpath)); + g_assert(path != NULL); + path->env = env; + + /* Scaling factors */ + path->sx = PANGO_SCALE/65536.0; + path->sy = -PANGO_SCALE/65536.0; + + { /* create a GeneralPath instance */ + jclass cls; + jmethodID method; + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "<init>", "()V"); + gp = path->obj = (*env)->NewObject (env, cls, method); + } + + layoutIterator = pango_layout_get_iter (tl->pango_layout); + g_assert (layoutIterator != NULL); + + if (pango_layout_iter_get_line (layoutIterator)) + do + { + PangoRectangle line_logical_rect; + current_line = pango_layout_iter_get_line (layoutIterator); + pango_layout_iter_get_line_extents (layoutIterator, + NULL, + &line_logical_rect); + + path->px = line_logical_rect.x/(double)PANGO_SCALE; + path->py = line_logical_rect.y/(double)PANGO_SCALE; + + current_run = current_line->runs; + while (current_run) + { + FT_Face ft_face; + int index; + PangoGlyphItem *run = current_run->data; + PangoGlyphString *glyphs = run->glyphs; + + PangoAnalysis *analysis = &run->item->analysis; + g_assert (analysis != NULL); + g_assert (analysis->font != NULL); + + ft_face = pango_fc_font_lock_face ((PangoFcFont *)analysis->font); + g_assert (ft_face != NULL); + + for (index = 0; index < glyphs->num_glyphs; index++) + { + FT_Glyph glyph; + FT_Error fterror; + PangoGlyphGeometry pgg = glyphs->glyphs[index].geometry; + + fterror = FT_Load_Glyph(ft_face, + (FT_UInt)(glyphs->glyphs[index].glyph), + FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP); + g_assert(fterror == 0); + + FT_Get_Glyph (ft_face->glyph, &glyph); + FT_Outline_Decompose (&(((FT_OutlineGlyph)glyph)->outline), + &ftCallbacks, path); + FT_Done_Glyph (glyph); + + path->px += pgg.width/(double)PANGO_SCALE; + } + + pango_fc_font_unlock_face ((PangoFcFont *)analysis->font); + current_run = current_run->next; + } + } while (pango_layout_iter_next_line (layoutIterator)); + + g_free(path); + gdk_threads_leave (); + + if (transform != NULL) + { + jclass cls; + jmethodID method; + + cls = (*env)->FindClass (env, "java/awt/geom/GeneralPath"); + method = (*env)->GetMethodID (env, cls, "transform", + "(Ljava/awt/geom/AffineTransform;)V"); + (*env)->CallVoidMethod(env, gp, method, transform ); + } + + return gp; +} diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c index 52922ddb82e..ef9ac12076a 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c @@ -46,11 +46,11 @@ Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_create gpointer widget; gdk_threads_enter (); - + /* Create global reference and save it for future use */ NSA_SET_GLOBAL_REF (env, obj); - widget = gtk_type_new (gtk_drawing_area_get_type ()); + widget = gtk_drawing_area_new (); NSA_SET_PTR (env, obj, widget); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c index 4f28750921b..5ba300b7e20 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c @@ -64,7 +64,7 @@ Java_gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer_remove /* Update the group to point to some other widget in the group. We have to do this because Gtk doesn't have a separate object to represent a radio button's group. */ - for (list = gtk_radio_button_group (button); list != NULL; + for (list = gtk_radio_button_get_group (button); list != NULL; list = list->next) { if (list->data != button) diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c index 7012bd82115..b74b0a265e0 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c @@ -130,7 +130,7 @@ Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeSetCheckboxGroup gtk_radio_button_set_group (button, NULL); else gtk_radio_button_set_group (button, - gtk_radio_button_group + gtk_radio_button_get_group (GTK_RADIO_BUTTON (native_group))); /* If the native group wasn't set on the new CheckboxGroup, then set diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c index f10a80d580b..779be57235d 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c @@ -53,7 +53,11 @@ jstring cp_gtk_imageTarget; jstring cp_gtk_filesTarget; /* Simple id to keep track of the selection we are currently managing. */ +#if SIZEOF_VOID_P == 8 +static long current_selection = 0; +#else static int current_selection = 0; +#endif /* Whether we "own" the clipboard. And may clear it. */ static int owner = 0; @@ -261,7 +265,11 @@ static void clipboard_clear_func (GtkClipboard *clipboard __attribute__((unused)), gpointer user_data) { +#if SIZEOF_VOID_P == 8 + if (owner && (long) user_data == current_selection) +#else if (owner && (int) user_data == current_selection) +#endif { JNIEnv *env = cp_gtk_gdk_env(); owner = 0; diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c index f832da5a462..6de7b61b8e9 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c @@ -56,10 +56,6 @@ exception statement from your version. */ #define AWT_HAND_CURSOR 12 #define AWT_MOVE_CURSOR 13 -#define AWT_BUTTON1_DOWN_MASK (1 << 10) -#define AWT_BUTTON2_DOWN_MASK (1 << 11) -#define AWT_BUTTON3_DOWN_MASK (1 << 12) - /* FIXME: use gtk-double-click-time, gtk-double-click-distance */ #define MULTI_CLICK_TIME 250 /* as opposed to a MULTI_PASS_TIME :) */ @@ -135,11 +131,11 @@ button_to_awt_mods (int button) switch (button) { case 1: - return AWT_BUTTON1_MASK; + return AWT_BUTTON1_DOWN_MASK | AWT_BUTTON1_MASK; case 2: - return AWT_BUTTON2_MASK; + return AWT_BUTTON2_DOWN_MASK | AWT_BUTTON2_MASK; case 3: - return AWT_BUTTON3_MASK; + return AWT_BUTTON3_DOWN_MASK | AWT_BUTTON3_MASK; } return 0; @@ -151,11 +147,11 @@ cp_gtk_state_to_awt_mods (guint state) jint result = 0; if (state & GDK_SHIFT_MASK) - result |= AWT_SHIFT_DOWN_MASK; + result |= (AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK); if (state & GDK_CONTROL_MASK) - result |= AWT_CTRL_DOWN_MASK; + result |= (AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK); if (state & GDK_MOD1_MASK) - result |= AWT_ALT_DOWN_MASK; + result |= (AWT_ALT_DOWN_MASK | AWT_ALT_MASK); return result; } @@ -166,13 +162,13 @@ state_to_awt_mods_with_button_states (guint state) jint result = 0; if (state & GDK_SHIFT_MASK) - result |= AWT_SHIFT_DOWN_MASK; + result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; if (state & GDK_CONTROL_MASK) - result |= AWT_CTRL_DOWN_MASK; + result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; if (state & GDK_MOD1_MASK) - result |= AWT_ALT_DOWN_MASK; + result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; if (state & GDK_BUTTON1_MASK) - result |= AWT_BUTTON1_DOWN_MASK; + result |= AWT_BUTTON1_DOWN_MASK | AWT_BUTTON1_MASK; if (state & GDK_BUTTON2_MASK) result |= AWT_BUTTON2_DOWN_MASK; if (state & GDK_BUTTON3_MASK) @@ -253,7 +249,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursorUnlocked gdk_cursor = gdk_cursor_new (gdk_cursor_type); gdk_window_set_cursor (widget->window, gdk_cursor); - gdk_cursor_destroy (gdk_cursor); + gdk_cursor_unref (gdk_cursor); } JNIEXPORT void JNICALL @@ -276,9 +272,9 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetParent if (widget->parent == NULL) { if (GTK_IS_WINDOW (parent_widget)) - { - GList *children = gtk_container_children - (GTK_CONTAINER (parent_widget)); + { + GList *children = gtk_container_get_children + (GTK_CONTAINER (parent_widget)); if (GTK_IS_MENU_BAR (children->data)) gtk_fixed_put (GTK_FIXED (children->next->data), widget, 0, 0); @@ -458,24 +454,47 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetDispatchKeyEvent * Find the origin of a widget's window. */ JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen + (JNIEnv * env, jobject obj, jintArray jpoint) +{ + void *ptr; + jint *point; + + gdk_threads_enter (); + + ptr = NSA_GET_PTR (env, obj); + point = (*env)->GetIntArrayElements (env, jpoint, 0); + + gdk_window_get_root_origin (GTK_WIDGET (ptr)->window, point, point+1); + + (*env)->ReleaseIntArrayElements(env, jpoint, point, 0); + + gdk_threads_leave (); +} + +/* + * Find the origin of a widget + */ +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen (JNIEnv * env, jobject obj, jintArray jpoint) { void *ptr; jint *point; + GtkWidget *widget; gdk_threads_enter (); ptr = NSA_GET_PTR (env, obj); point = (*env)->GetIntArrayElements (env, jpoint, 0); - gdk_window_get_origin (GTK_WIDGET (ptr)->window, point, point+1); + widget = GTK_WIDGET(ptr); + while(gtk_widget_get_parent(widget) != NULL) + widget = gtk_widget_get_parent(widget); + gdk_window_get_position (GTK_WIDGET(widget)->window, point, point+1); - if (!GTK_IS_CONTAINER (ptr)) - { - *point += GTK_WIDGET(ptr)->allocation.x; - *(point+1) += GTK_WIDGET(ptr)->allocation.y; - } + *point += GTK_WIDGET(ptr)->allocation.x; + *(point+1) += GTK_WIDGET(ptr)->allocation.y; (*env)->ReleaseIntArrayElements(env, jpoint, point, 0); @@ -766,7 +785,10 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isRealized ptr = NSA_GET_PTR (env, obj); if (ptr == NULL) - return FALSE; + { + gdk_threads_leave (); + return FALSE; + } ret_val = GTK_WIDGET_REALIZED (GTK_WIDGET (ptr)); @@ -844,7 +866,7 @@ find_fg_color_widget (GtkWidget *widget) if (GTK_IS_EVENT_BOX (widget) || (GTK_IS_BUTTON (widget) - && !GTK_IS_OPTION_MENU (widget))) + && !GTK_IS_COMBO_BOX (widget))) fg_color_widget = gtk_bin_get_child (GTK_BIN(widget)); else fg_color_widget = widget; @@ -974,7 +996,7 @@ component_button_release_cb (GtkWidget *widget __attribute__((unused)), /* Generate an AWT click event only if the release occured in the window it was pressed in, and the mouse has not been dragged since the last time it was pressed. */ - gdk_window_get_size (event->window, &width, &height); + gdk_drawable_get_size (event->window, &width, &height); if (! hasBeenDragged && event->x >= 0 && event->y >= 0 diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c index fdc73ccdba5..ae065763688 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c @@ -299,7 +299,7 @@ Java_gnu_java_awt_peer_gtk_GtkImage_freePixmap(JNIEnv *env, jobject obj) if (offScreen (env, obj) == JNI_FALSE) gdk_pixbuf_unref ((GdkPixbuf *)getData (env, obj)); else - gdk_pixmap_unref ((GdkPixmap *)getData (env, obj)); + g_object_unref ((GdkPixmap *)getData (env, obj)); gdk_threads_leave (); } diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c index 3e21a04024d..a5c0074c068 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c @@ -88,7 +88,7 @@ Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_nativeSetHelpMenu if (helpmenu != NULL) { - list = gtk_container_children (GTK_CONTAINER (mbar)); + list = gtk_container_get_children (GTK_CONTAINER (mbar)); while (list != NULL && list->data != helpmenu) list = list->next; if (list != NULL && list->data == helpmenu) @@ -110,7 +110,7 @@ Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_delMenu ptr = NSA_GET_PTR (env, obj); - list = gtk_container_children (GTK_CONTAINER (ptr)); + list = gtk_container_get_children (GTK_CONTAINER (ptr)); list = g_list_nth (list, index); gtk_container_remove (GTK_CONTAINER (ptr), GTK_WIDGET (list->data)); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c index 16018f001e4..b61a55bee56 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c @@ -165,7 +165,7 @@ Java_gnu_java_awt_peer_gtk_GtkMenuPeer_delItem ptr = NSA_GET_PTR (env, obj); - list = gtk_container_children (GTK_CONTAINER (ptr)); + list = gtk_container_get_children (GTK_CONTAINER (ptr)); list = g_list_nth (list, index); gtk_container_remove (GTK_CONTAINER (ptr), GTK_WIDGET (list->data)); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c index 040cc92ff1e..59b56cf355b 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c @@ -160,9 +160,7 @@ Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit (JNIEnv *env, XSynchronize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), True); #endif - gdk_rgb_init (); - gtk_widget_set_default_colormap (gdk_rgb_get_cmap ()); - gtk_widget_set_default_visual (gdk_rgb_get_visual ()); + gtk_widget_set_default_colormap (gdk_rgb_get_colormap ()); /* Make sure queued calls don't get sent to GTK/GDK while we're shutting down. */ diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c index 0f623d1655f..d79bbecbaf6 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c @@ -952,29 +952,29 @@ keyevent_state_to_awt_mods (GdkEventKey *event) if (event->keyval == GDK_Shift_L || event->keyval == GDK_Shift_R) - result |= AWT_SHIFT_DOWN_MASK; + result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; else { if (state & GDK_SHIFT_MASK) - result |= AWT_SHIFT_DOWN_MASK; + result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; } if (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R) - result |= AWT_CTRL_DOWN_MASK; + result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; else { if (state & GDK_CONTROL_MASK) - result |= AWT_CTRL_DOWN_MASK; + result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; } if (event->keyval == GDK_Alt_L || event->keyval == GDK_Alt_R) - result |= AWT_ALT_DOWN_MASK; + result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; else { if (state & GDK_MOD1_MASK) - result |= AWT_ALT_DOWN_MASK; + result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; } } else if (event->type == GDK_KEY_RELEASE) @@ -985,20 +985,20 @@ keyevent_state_to_awt_mods (GdkEventKey *event) && event->keyval != GDK_Shift_R) { if (state & GDK_SHIFT_MASK) - result |= AWT_SHIFT_DOWN_MASK; + result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; } if (event->keyval != GDK_Control_L && event->keyval != GDK_Control_R) { if (state & GDK_CONTROL_MASK) - result |= AWT_CTRL_DOWN_MASK; + result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; } if (event->keyval != GDK_Alt_L && event->keyval != GDK_Alt_R) { if (state & GDK_MOD1_MASK) - result |= AWT_ALT_DOWN_MASK; + result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; } } @@ -1028,9 +1028,6 @@ static gboolean window_delete_cb (GtkWidget *widget, GdkEvent *event, static void window_destroy_cb (GtkWidget *widget, GdkEvent *event, jobject peer); static void window_show_cb (GtkWidget *widget, jobject peer); -static void window_active_state_change_cb (GtkWidget *widget, - GParamSpec *pspec, - jobject peer); static void window_focus_state_change_cb (GtkWidget *widget, GParamSpec *pspec, jobject peer); @@ -1043,7 +1040,6 @@ static gboolean window_focus_out_cb (GtkWidget * widget, static gboolean window_window_state_cb (GtkWidget *widget, GdkEvent *event, jobject peer); -static jint window_get_new_state (GtkWidget *widget); static gboolean window_property_changed_cb (GtkWidget *widget, GdkEventProperty *event, jobject peer); @@ -1209,7 +1205,7 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetResizable ptr = NSA_GET_PTR (env, obj); - gtk_window_set_policy (GTK_WINDOW (ptr), resizable, resizable, FALSE); + gtk_window_set_resizable (GTK_WINDOW (ptr), resizable); gdk_threads_leave (); } @@ -1278,9 +1274,6 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals g_signal_connect (G_OBJECT (ptr), "show", G_CALLBACK (window_show_cb), *gref); - g_signal_connect (G_OBJECT (ptr), "notify::is-active", - G_CALLBACK (window_active_state_change_cb), *gref); - g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus", G_CALLBACK (window_focus_state_change_cb), *gref); @@ -1592,31 +1585,6 @@ window_show_cb (GtkWidget *widget __attribute__((unused)), } static void -window_active_state_change_cb (GtkWidget *widget __attribute__((unused)), - GParamSpec *pspec __attribute__((unused)), - jobject peer __attribute__((unused))) -{ - /* FIXME: not sure if this is needed or not. */ - /* Remove the unused attributes if you fix the below. */ -#if 0 - gdk_threads_leave (); - - if (GTK_WINDOW (widget)->is_active) - (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, - postWindowEventID, - (jint) AWT_WINDOW_GAINED_FOCUS, - (jobject) NULL, (jint) 0); - else - (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, - postWindowEventID, - (jint) AWT_WINDOW_DEACTIVATED, - (jobject) NULL, (jint) 0); - - gdk_threads_enter (); -#endif -} - -static void window_focus_state_change_cb (GtkWidget *widget, GParamSpec *pspec __attribute__((unused)), jobject peer) @@ -1660,7 +1628,7 @@ window_focus_out_cb (GtkWidget * widget __attribute__((unused)), } static gboolean -window_window_state_cb (GtkWidget *widget, +window_window_state_cb (GtkWidget *widget __attribute__((unused)), GdkEvent *event, jobject peer) { @@ -1695,8 +1663,6 @@ window_window_state_cb (GtkWidget *widget, if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED) new_state |= AWT_FRAME_STATE_ICONIFIED; - new_state |= window_get_new_state (widget); - (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_STATE_CHANGED, @@ -1705,47 +1671,6 @@ window_window_state_cb (GtkWidget *widget, return TRUE; } -static jint -window_get_new_state (GtkWidget *widget) -{ - GdkDisplay *display = gtk_widget_get_display(widget); - jint new_state = AWT_FRAME_STATE_NORMAL; - Atom type; - gint format; - gulong atom_count; - gulong bytes_after; - Atom *atom_list = NULL; - union atom_list_union alu; - gulong i; - - alu.atom_list = &atom_list; - XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), - GDK_WINDOW_XID (widget->window), - gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"), - 0, G_MAXLONG, False, XA_ATOM, &type, &format, &atom_count, - &bytes_after, alu.gu_extents); - - if (type != None) - { - Atom maxvert = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_VERT"); - Atom maxhorz = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_HORZ"); - - i = 0; - while (i < atom_count) - { - if (atom_list[i] == maxhorz) - new_state |= AWT_FRAME_STATE_MAXIMIZED_HORIZ; - else if (atom_list[i] == maxvert) - new_state |= AWT_FRAME_STATE_MAXIMIZED_VERT; - - ++i; - } - - XFree (atom_list); - } - return new_state; -} - static gboolean window_property_changed_cb (GtkWidget *widget __attribute__((unused)), GdkEventProperty *event, diff --git a/libjava/classpath/native/jni/gtk-peer/gtkpeer.h b/libjava/classpath/native/jni/gtk-peer/gtkpeer.h index 2b16d99b455..f332b62a156 100644 --- a/libjava/classpath/native/jni/gtk-peer/gtkpeer.h +++ b/libjava/classpath/native/jni/gtk-peer/gtkpeer.h @@ -111,15 +111,26 @@ struct graphics jint x_offset, y_offset; }; +/* New-style event masks. */ +#define AWT_BUTTON1_DOWN_MASK (1 << 10) +#define AWT_BUTTON2_DOWN_MASK (1 << 11) +#define AWT_BUTTON3_DOWN_MASK (1 << 12) + #define AWT_SHIFT_DOWN_MASK (1 << 6) #define AWT_CTRL_DOWN_MASK (1 << 7) #define AWT_META_DOWN_MASK (1 << 8) #define AWT_ALT_DOWN_MASK (1 << 9) +/* Old-style event masks. */ #define AWT_BUTTON1_MASK (1 << 4) #define AWT_BUTTON2_MASK (1 << 3) #define AWT_BUTTON3_MASK (1 << 2) +#define AWT_SHIFT_MASK (1 << 0) +#define AWT_CTRL_MASK (1 << 1) +#define AWT_META_MASK (1 << 2) +#define AWT_ALT_MASK (1 << 3) + #define AWT_ITEM_SELECTED 1 #define AWT_ITEM_DESELECTED 2 |