? ChangeLog.new ? build ? external/jaxp/autom4te-2.53.cache Index: HACKING =================================================================== RCS file: /cvsroot/classpath/classpath/HACKING,v retrieving revision 1.16 diff -u -r1.16 HACKING --- HACKING 24 Dec 2002 05:35:22 -0000 1.16 +++ HACKING 20 Apr 2003 18:59:48 -0000 @@ -23,7 +23,7 @@ For building the JNI native libraries, the following are required. - - GTK+ 1.2.x + - GTK+ 2.x.x - libart_lgpl 2.1.0 - gdk-pixbuf (Only needed if you want to compile the native library) Index: INSTALL =================================================================== RCS file: /cvsroot/classpath/classpath/INSTALL,v retrieving revision 1.15 diff -u -r1.15 INSTALL --- INSTALL 24 Dec 2002 05:35:22 -0000 1.15 +++ INSTALL 20 Apr 2003 18:59:48 -0000 @@ -36,7 +36,7 @@ For building the JNI native libraries, the following are required unless --disable-gtk-peer is used as an argument to configure. - - GTK+ 1.2.x + - GTK+ 2.x.x - libart_lgpl 2.1.0 - gdk-pixbuf (Only needed if you want to compile the native library) Index: configure.in =================================================================== RCS file: /cvsroot/classpath/classpath/configure.in,v retrieving revision 1.118 diff -u -r1.118 configure.in --- configure.in 27 Mar 2003 03:32:08 -0000 1.118 +++ configure.in 20 Apr 2003 18:59:49 -0000 @@ -125,10 +125,10 @@ dnl Check for AWT related glib/gtk/libart_lgpl if test "x${COMPILE_GTK_PEER}" = xyes; then - AM_PATH_GTK(1.2.4,,exit 1) - AM_PATH_GLIB(1.2.4,,exit 1,gthread) + AM_PATH_GTK_2_0(2.0.0,,exit 1) + AM_PATH_GLIB_2_0(2.0.0,,exit 1,gthread) dnl XXX Fix me when libart.m4 has the compile test fixed! - enable_libarttest=no + dnl enable_libarttest=no AM_PATH_LIBART(2.1.0,,exit 1) fi Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c,v retrieving revision 1.3 diff -u -r1.3 gnu_java_awt_peer_gtk_GdkGraphics.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 22 Jan 2002 22:27:02 -0000 1.3 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 20 Apr 2003 18:59:56 -0000 @@ -40,7 +40,7 @@ #include #include -#define GDK_STABLE_IS_PIXMAP(d) (((GdkWindowPrivate *)d)->window_type == GDK_WINDOW_PIXMAP) +#define GDK_STABLE_IS_PIXMAP(d) (GDK_IS_PIXMAP(d)) GdkPoint * translate_points (JNIEnv *env, jintArray xpoints, jintArray ypoints, Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,v retrieving revision 1.4 diff -u -r1.4 gnu_java_awt_peer_gtk_GtkButtonPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 19 Feb 2003 03:50:33 -0000 1.4 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 20 Apr 2003 18:59:56 -0000 @@ -42,10 +42,11 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create (JNIEnv *env, jobject obj) { - gpointer widget; + GtkWidget *widget, *label; gdk_threads_enter (); - widget = gtk_type_new (gtk_button_get_type ()); + widget = gtk_button_new (); + gtk_widget_show (widget); gdk_threads_leave (); NSA_SET_PTR (env, obj, widget); @@ -55,34 +56,30 @@ Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetFont (JNIEnv *env, jobject obj, jstring jname, jint size) { - const char *xlfd; -# define FBUFSZ 200 - char buf[FBUFSZ]; + const char *font_name; void *ptr; - GdkFont * new_font; - GtkStyle * style; - GtkWidget * button; - GtkWidget * label; + GtkWidget *button; + GtkWidget *label; + PangoFontDescription *font_desc; ptr = NSA_GET_PTR (env, obj); + button = GTK_WIDGET (ptr); - label = GTK_BIN(button)->child; - - if (label == NULL) return; - xlfd = (*env)->GetStringUTFChars (env, jname, NULL); - snprintf(buf, FBUFSZ, xlfd, size); - (*env)->ReleaseStringUTFChars (env, jname, xlfd); + label = gtk_bin_get_child (GTK_BIN(button)); + + if (!label) + return; + + font_name = (*env)->GetStringUTFChars (env, jname, NULL); + gdk_threads_enter(); - new_font = gdk_font_load (buf); /* FIXME: deprecated. Replacement? */ - if (new_font == NULL) - { - /* Fail quietly for now. */ - gdk_threads_leave(); - return; - } - style = gtk_style_copy (gtk_widget_get_style (label)); - style -> font = new_font; - gtk_widget_set_style (label, style); - /* FIXME: Documentation varies as to whether we should unref style. */ + + font_desc = pango_font_description_from_string (font_name); + pango_font_description_set_size (font_desc, size); + gtk_widget_modify_font (GTK_WIDGET(label), font_desc); + pango_font_description_free (font_desc); + gdk_threads_leave(); + + (*env)->ReleaseStringUTFChars (env, jname, font_name); } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v retrieving revision 1.6 diff -u -r1.6 gnu_java_awt_peer_gtk_GtkComponentPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 15 Nov 2002 03:05:11 -0000 1.6 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 20 Apr 2003 18:59:56 -0000 @@ -43,18 +43,57 @@ #define GTK_OBJECT_SETV(ptr, arg) \ gdk_threads_enter (); \ { \ - GtkArgInfo *info = NULL; \ char *error; \ + GtkArg test_arg; \ \ - error = gtk_object_arg_get_info (GTK_OBJECT_TYPE (ptr), arg.name, &info); \ - if (error) \ + gtk_object_get (GTK_OBJECT_TYPE (ptr), arg.name, GTK_VALUE_POINTER (test_arg)); \ + if (GTK_VALUE_POINTER (test_arg) == NULL) \ { \ /* assume the argument is destined for the container's only child */ \ ptr = gtk_container_children (GTK_CONTAINER (ptr))->data; \ } \ - gtk_object_setv (GTK_OBJECT (ptr), 1, &arg); \ - } \ - gdk_threads_leave (); \ + switch (arg.type) \ + { \ + case GTK_TYPE_CHAR: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_CHAR (arg)); \ + break; \ + case GTK_TYPE_UCHAR: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_UCHAR (arg)); \ + break; \ + case GTK_TYPE_BOOL: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_BOOL (arg)); \ + break; \ + case GTK_TYPE_INT: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_INT (arg)); \ + break; \ + case GTK_TYPE_UINT: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_UINT (arg)); \ + break; \ + case GTK_TYPE_LONG: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_LONG (arg)); \ + break; \ + case GTK_TYPE_ULONG: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_ULONG (arg)); \ + break; \ + case GTK_TYPE_FLOAT: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_FLOAT (arg)); \ + break; \ + case GTK_TYPE_DOUBLE: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_DOUBLE (arg)); \ + break; \ + case GTK_TYPE_STRING: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_STRING (arg)); \ + break; \ + case GTK_TYPE_BOXED: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_BOXED (arg)); \ + break; \ + case GTK_TYPE_POINTER: \ + gtk_object_set (GTK_OBJECT (ptr), arg.name, GTK_VALUE_POINTER (arg)); \ + break; \ + } \ + } \ + gdk_threads_leave (); \ + JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose (JNIEnv *env, jobject obj) Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c,v retrieving revision 1.3 diff -u -r1.3 gnu_java_awt_peer_gtk_GtkListPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c 22 Jan 2002 22:27:02 -0000 1.3 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c 20 Apr 2003 18:59:57 -0000 @@ -251,34 +251,10 @@ list = GTK_WIDGET (CLIST_FROM_SW (ptr)); sw = GTK_SCROLLED_WINDOW (ptr); - /* - gtk_widget_size_request(GTK_WIDGET (GTK_SCROLLED_WINDOW(sw)->hscrollbar), - &myreq); - dims[1]=myreq.height+GTK_SCROLLED_WINDOW_CLASS - (GTK_OBJECT (sw)->klass)->scrollbar_spacing; - */ + gtk_widget_size_request(list, &myreq); + dims[1]=myreq.height; + dims[0]=myreq.width; - gtk_signal_emit_by_name (GTK_OBJECT (GTK_SCROLLED_WINDOW(sw)->vscrollbar), - "size_request", &myreq); - /* - - gtk_widget_size_request(GTK_WIDGET (GTK_SCROLLED_WINDOW(sw)->vscrollbar), - &myreq); - */ - - dims[0]=myreq.width+GTK_SCROLLED_WINDOW_CLASS - (GTK_OBJECT (sw)->klass)->scrollbar_spacing; - - gtk_signal_emit_by_name (GTK_OBJECT (list), "size_request", &myreq); - - // gtk_widget_size_request(GTK_WIDGET (list), &myreq); - - dims[0] += myreq.width + gdk_char_width (list->style->font, 'W'); - - dims[1] += ((rows * (gdk_char_height (list->style->font, 'W')+7)) - + (2 * (list->style->klass->ythickness))); - - gdk_threads_leave (); (*env)->ReleaseIntArrayElements (env, jdims, dims, 0); Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c,v retrieving revision 1.4 diff -u -r1.4 gnu_java_awt_peer_gtk_GtkScrollBarPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c 19 Feb 2003 03:50:33 -0000 1.4 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c 20 Apr 2003 18:59:57 -0000 @@ -46,11 +46,15 @@ }; static void -post_adjustment_event (GtkAdjustment *adj, struct range_scrollbar *rs) +post_adjustment_event (GtkRange *range, GtkScrollType scroll, + struct range_scrollbar *rs) { jint type; + GtkAdjustment *adj; - switch (rs->range->scroll_type) + adj = gtk_range_get_adjustment (range); + + switch (scroll) { case GTK_SCROLL_STEP_FORWARD: type = AWT_ADJUSTMENT_UNIT_INCREMENT; @@ -113,15 +117,11 @@ rs->range = GTK_RANGE (ptr); rs->scrollbar = (jobject *) malloc (sizeof (jobject)); *(rs->scrollbar) = (*env)->NewGlobalRef (env, obj); - gtk_signal_connect (GTK_OBJECT (GTK_RANGE (ptr)->adjustment), - "value_changed", + gtk_signal_connect (GTK_OBJECT (GTK_RANGE (ptr)), + "move_slider", GTK_SIGNAL_FUNC (post_adjustment_event), rs); - connect_awt_hook (env, obj, 4, - GTK_RANGE (ptr)->trough, - GTK_RANGE (ptr)->slider, - GTK_RANGE (ptr)->step_forw, - GTK_RANGE (ptr)->step_back); + connect_awt_hook (env, obj, 1, GTK_SCROLLBAR (ptr)->range); gdk_threads_leave (); } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,v retrieving revision 1.4 diff -u -r1.4 gnu_java_awt_peer_gtk_GtkTextAreaPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c 19 Feb 2003 03:50:33 -0000 1.4 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c 20 Apr 2003 18:59:57 -0000 @@ -39,7 +39,7 @@ #include "gtkpeer.h" #include "gnu_java_awt_peer_gtk_GtkTextAreaPeer.h" -#define TEXT_FROM_SW(obj) (GTK_TEXT(GTK_SCROLLED_WINDOW (obj)->container.child)) +#define TEXT_FROM_SW(obj) (GTK_TEXT_VIEW(GTK_SCROLLED_WINDOW (obj)->container.child)) JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create (JNIEnv *env, jobject obj, jint scroll) @@ -47,74 +47,27 @@ GtkWidget *text, *sw; gdk_threads_enter (); - text = gtk_text_new (NULL, NULL); + text = gtk_text_view_new (); gtk_widget_show (text); sw = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (sw), text); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + /* horizontal scrollbar */ + (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH + || scroll == AWT_TEXTAREA_SCROLLBARS_HORIZONTAL_ONLY) ? + GTK_POLICY_ALWAYS : GTK_POLICY_NEVER, + /* vertical scrollbar */ + (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH + || scroll == AWT_TEXTAREA_SCROLLBARS_VERTICAL_ONLY) ? + GTK_POLICY_ALWAYS : GTK_POLICY_NEVER); - /* horizontal scrollbar */ - (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH - || scroll == AWT_TEXTAREA_SCROLLBARS_HORIZONTAL_ONLY) ? - GTK_POLICY_ALWAYS : GTK_POLICY_NEVER, - - /* vertical scrollbar */ - (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH - || scroll == AWT_TEXTAREA_SCROLLBARS_VERTICAL_ONLY) ? - GTK_POLICY_ALWAYS : GTK_POLICY_NEVER); gdk_threads_leave (); NSA_SET_PTR (env, obj, sw); } - -JNIEXPORT void JNICALL -Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_old_create - (JNIEnv *env, jobject obj, jobject parent_obj, - jstring contents, jint scroll) -{ - GtkWidget *text, *sw; - const char *str; - int pos=0; - void *parent; - - parent = NSA_GET_PTR (env, parent_obj); - str = (*env)->GetStringUTFChars (env, contents, NULL); - - gdk_threads_enter (); - - text = gtk_text_new (NULL, NULL); - gtk_text_set_editable (GTK_TEXT (text), TRUE); - - gtk_editable_insert_text (GTK_EDITABLE (text), str, - strlen (str), &pos); - - sw = gtk_scrolled_window_new (NULL, NULL); - gtk_container_add (GTK_CONTAINER (sw), text); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), - - /* horizontal scrollbar */ - (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH - || scroll == AWT_TEXTAREA_SCROLLBARS_HORIZONTAL_ONLY) ? - GTK_POLICY_ALWAYS : GTK_POLICY_NEVER, - - /* vertical scrollbar */ - (scroll == AWT_TEXTAREA_SCROLLBARS_BOTH - || scroll == AWT_TEXTAREA_SCROLLBARS_VERTICAL_ONLY) ? - GTK_POLICY_ALWAYS : GTK_POLICY_NEVER); - - set_visible (text, TRUE); - set_parent (sw, GTK_CONTAINER (parent)); - - gdk_threads_leave (); - - (*env)->ReleaseStringUTFChars (env, contents, str); - - NSA_SET_PTR (env, obj, sw); -} - JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkTextGetSize (JNIEnv *env, jobject obj, jint rows, jint cols, jintArray jdims) @@ -122,8 +75,8 @@ void *ptr; jint *dims; GtkWidget *text; - GtkScrolledWindow *sw; - GtkRequisition myreq; +/* GtkScrolledWindow *sw; */ + GtkRequisition requisition; ptr = NSA_GET_PTR (env, obj); @@ -133,39 +86,16 @@ gdk_threads_enter (); text = GTK_WIDGET (TEXT_FROM_SW (ptr)); - sw = GTK_SCROLLED_WINDOW (ptr); - - gtk_signal_emit_by_name (GTK_OBJECT (GTK_SCROLLED_WINDOW(sw)->vscrollbar), - "size_request", &myreq); - //gtk_widget_size_request(GTK_WIDGET (GTK_SCROLLED_WINDOW(sw)->hscrollbar), - // &myreq); - dims[0]=myreq.width+GTK_SCROLLED_WINDOW_CLASS - (GTK_OBJECT (sw)->klass)->scrollbar_spacing; - - gtk_signal_emit_by_name (GTK_OBJECT (GTK_SCROLLED_WINDOW(sw)->hscrollbar), - "size_request", &myreq); - //gtk_widget_size_request(GTK_WIDGET (GTK_SCROLLED_WINDOW(sw)->vscrollbar), - // &myreq); - dims[1]=myreq.height+GTK_SCROLLED_WINDOW_CLASS - (GTK_OBJECT (sw)->klass)->scrollbar_spacing; - - /* The '1' in the following assignments is from - #define TEXT_BORDER_ROOM 1 - in gtktext.c */ - - /* Gtk text seems to wrap slightly prematurely. Compensate. */ - ++cols; - ++dims[0]; - - dims[0] += ((cols * gdk_char_width (text->style->font, 'W')) - + (2 * (text->style->klass->xthickness + 1))); - /* Guess at the height. Is there a better way? */ - dims[1] += ((rows * gdk_string_height (text->style->font, "Wg")) - + (2 * (text->style->klass->ythickness + 1))); + /* sw = GTK_SCROLLED_WINDOW (ptr); */ + + gtk_widget_size_request(GTK_WIDGET (text), &requisition); + dims[0] = requisition.width; + dims[1] = requisition.height; gdk_threads_leave (); (*env)->ReleaseIntArrayElements (env, jdims, dims, 0); + } @@ -173,6 +103,9 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_insert (JNIEnv *env, jobject obj, jstring contents, jint position) { + GtkTextBuffer *buf; + GtkTextIter iter; + GtkWidget *text; void *ptr; const char *str; int pos=position; @@ -181,8 +114,13 @@ str = (*env)->GetStringUTFChars (env, contents, NULL); gdk_threads_enter (); - gtk_editable_insert_text (GTK_EDITABLE (TEXT_FROM_SW (ptr)), - str, strlen (str), &pos); + + text = GTK_WIDGET (TEXT_FROM_SW (ptr)); + + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + gtk_text_buffer_get_iter_at_offset (buf, &iter, pos); + gtk_text_buffer_insert (buf, &iter, str, strlen (str)); + gdk_threads_leave (); (*env)->ReleaseStringUTFChars (env, contents, str); @@ -192,21 +130,29 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_replaceRange (JNIEnv *env, jobject obj, jstring contents, jint start, jint end) { + GtkWidget *text; + GtkTextBuffer *buf; + GtkTextIter iter, startIter, endIter; void *ptr; - GtkEditable *text; const char *str; - int pos = start; + int mystart = start; + int myend = end; ptr = NSA_GET_PTR (env, obj); str = (*env)->GetStringUTFChars (env, contents, NULL); gdk_threads_enter (); - text = GTK_EDITABLE (TEXT_FROM_SW (ptr)); - gtk_text_freeze (GTK_TEXT (text)); - gtk_editable_delete_text (text, start, end); - gtk_editable_insert_text (text, str, strlen (str), &pos); - gtk_text_thaw (GTK_TEXT (text)); + text = GTK_WIDGET (TEXT_FROM_SW (ptr)); + + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + + gtk_text_buffer_get_iter_at_offset (buf, &startIter, mystart); + gtk_text_buffer_get_iter_at_offset (buf, &endIter, myend); + gtk_text_buffer_delete (buf, &startIter, &endIter); + + gtk_text_buffer_get_iter_at_offset (buf, &iter, mystart); + gtk_text_buffer_insert(buf, &iter, str, strlen (str)); gdk_threads_leave (); (*env)->ReleaseStringUTFChars (env, contents, str); @@ -216,31 +162,25 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkSetFont (JNIEnv *env, jobject obj, jstring jname, jint size) { - const char *xlfd; -# define FBUFSZ 200 - char buf[FBUFSZ]; + const char *font_name; void *ptr; - GdkFont * new_font; - GtkStyle * style; - GtkWidget * text; + GtkWidget *text; + PangoFontDescription *font_desc; ptr = NSA_GET_PTR (env, obj); text = GTK_WIDGET (TEXT_FROM_SW (ptr)); - xlfd = (*env)->GetStringUTFChars (env, jname, NULL); - snprintf(buf, FBUFSZ, xlfd, size); - (*env)->ReleaseStringUTFChars (env, jname, xlfd); + font_name = (*env)->GetStringUTFChars (env, jname, NULL); + gdk_threads_enter(); - new_font = gdk_font_load (buf); /* FIXME: deprecated. Replacement? */ - if (new_font == NULL) - { - /* Fail quietly for now. */ - gdk_threads_leave(); - return; - } - style = gtk_style_copy (gtk_widget_get_style (text)); - style -> font = new_font; - gtk_widget_set_style (text , style); - /* FIXME: Documentation varies as to whether we should unref style. */ + + font_desc = pango_font_description_from_string (font_name); + pango_font_description_set_size (font_desc, size); + gtk_widget_modify_font (GTK_WIDGET(text), font_desc); + pango_font_description_free (font_desc); + gdk_threads_leave(); + + (*env)->ReleaseStringUTFChars (env, jname, font_name); + } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c,v retrieving revision 1.3 diff -u -r1.3 gnu_java_awt_peer_gtk_GtkTextComponentPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c 22 Jan 2002 22:27:02 -0000 1.3 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c 20 Apr 2003 18:59:57 -0000 @@ -39,20 +39,47 @@ #include "gtkpeer.h" #include "gnu_java_awt_peer_gtk_GtkTextComponentPeer.h" -#define GET_EDITABLE(obj) (GTK_IS_EDITABLE (obj) ? GTK_EDITABLE (obj) : \ - GTK_EDITABLE (GTK_SCROLLED_WINDOW (obj)->container.child)) - JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getCaretPosition (JNIEnv *env, jobject obj) { void *ptr; int pos; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextMark *mark; + GtkTextIter iter; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - pos = gtk_editable_get_position (GET_EDITABLE (ptr)); + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + pos = gtk_editable_get_position (editable); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + mark = gtk_text_buffer_get_insert (buf); + gtk_text_buffer_get_iter_at_mark (buf, &iter, mark); + pos = gtk_text_iter_get_offset (&iter); + } + } + gdk_threads_leave (); return pos; @@ -63,11 +90,40 @@ (JNIEnv *env, jobject obj, jint pos) { void *ptr; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextMark *mark; + GtkTextIter iter; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - gtk_editable_set_position (GET_EDITABLE (ptr), pos); + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + gtk_editable_set_position (editable, pos); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + mark = gtk_text_buffer_get_insert (buf); + gtk_text_buffer_get_iter_at_mark (buf, &iter, mark); + gtk_text_iter_set_offset (&iter, pos); + } + } + gdk_threads_leave (); } @@ -77,11 +133,42 @@ { void *ptr; int pos; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextIter start; + GtkTextIter end; + int starti, endi; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - pos = GET_EDITABLE (ptr)->selection_start_pos; + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + if (gtk_editable_get_selection_bounds (editable, &starti, &endi)) + pos = starti; + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + if (gtk_text_buffer_get_selection_bounds(buf, &start, &end)) + pos = gtk_text_iter_get_offset (&start); + } + } + gdk_threads_leave (); return pos; @@ -93,11 +180,42 @@ { void *ptr; int pos; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextIter start; + GtkTextIter end; + int starti, endi; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - pos = GET_EDITABLE (ptr)->selection_end_pos; + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + if (gtk_editable_get_selection_bounds (editable, &starti, &endi)) + pos = endi; + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + if (gtk_text_buffer_get_selection_bounds(buf, &start, &end)) + pos = gtk_text_iter_get_offset (&end); + } + } + gdk_threads_leave (); return pos; @@ -108,11 +226,44 @@ (JNIEnv *env, jobject obj, jint start, jint end) { void *ptr; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextIter iter; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - gtk_editable_select_region (GET_EDITABLE (ptr), start, end); + + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + gtk_editable_select_region (editable, start, end); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + gtk_text_buffer_get_iter_at_offset (buf, &iter, start); + /* quickly move both 'insert' and 'selection_bound' to the + same position */ + gtk_text_buffer_place_cursor (buf, &iter); + gtk_text_buffer_get_iter_at_offset (buf, &iter, end); + gtk_text_buffer_move_mark_by_name (buf, "selection_bound", &iter); + } + } + gdk_threads_leave (); } @@ -121,11 +272,35 @@ (JNIEnv *env, jobject obj, jboolean state) { void *ptr; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - gtk_editable_set_editable (GET_EDITABLE (ptr), state); + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + gtk_editable_set_editable (editable, state); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + gtk_text_view_set_editable (GTK_TEXT_VIEW (text), state); + } + } + gdk_threads_leave (); } @@ -136,11 +311,40 @@ void *ptr; char *contents; jstring jcontents; + GtkEditable *editable; // type of GtkEntry (TextField) + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; + GtkTextIter start, end; ptr = NSA_GET_PTR (env, obj); gdk_threads_enter (); - contents = gtk_editable_get_chars (GET_EDITABLE (ptr), 0, -1); + + if (GTK_IS_EDITABLE (ptr)) + { + editable = GTK_EDITABLE (ptr); + contents = gtk_editable_get_chars (editable, 0, -1); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + gtk_text_buffer_get_start_iter (buf, &start); + gtk_text_buffer_get_end_iter (buf, &end); + contents = gtk_text_buffer_get_text (buf, &start, &end, FALSE); + } + } + gdk_threads_leave (); jcontents = (*env)->NewStringUTF (env, contents); @@ -154,27 +358,39 @@ (JNIEnv *env, jobject obj, jstring contents) { void *ptr; - GtkEditable *text; const char *str; - int pos = 0; + GtkWidget *text = NULL; // type of GtkTextView (TextArea) + GtkTextBuffer *buf; ptr = NSA_GET_PTR (env, obj); str = (*env)->GetStringUTFChars (env, contents, NULL); gdk_threads_enter (); - text = GET_EDITABLE (ptr); - - if (GTK_IS_TEXT (text)) - gtk_text_freeze (GTK_TEXT (text)); - - gtk_editable_delete_text (text, 0, -1); - gtk_editable_insert_text (text, str, strlen (str), &pos); - - if (GTK_IS_TEXT (text)) - gtk_text_thaw (GTK_TEXT (text)); + if (GTK_IS_EDITABLE (ptr)) + { + gtk_entry_set_text (GTK_ENTRY (ptr), str); + } + else + { + if (GTK_IS_SCROLLED_WINDOW (ptr)) + { + text = GTK_WIDGET (GTK_TEXT_VIEW (GTK_SCROLLED_WINDOW (ptr)->container.child)); + } + else if (GTK_IS_TEXT_VIEW (ptr)) + { + text = GTK_WIDGET (ptr); + } + + if (text) + { + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)); + gtk_text_buffer_set_text (buf, str, strlen (str)); + } + } gdk_threads_leave (); (*env)->ReleaseStringUTFChars (env, contents, str); + } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c,v retrieving revision 1.5 diff -u -r1.5 gnu_java_awt_peer_gtk_GtkTextFieldPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c 19 Feb 2003 03:50:33 -0000 1.5 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c 20 Apr 2003 18:59:57 -0000 @@ -43,10 +43,10 @@ Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_create (JNIEnv *env, jobject obj) { - gpointer widget; + GtkWidget *widget; gdk_threads_enter (); - widget = gtk_type_new (gtk_entry_get_type ()); + widget = gtk_entry_new (); gdk_threads_leave (); NSA_SET_PTR (env, obj, widget); @@ -68,36 +68,6 @@ gdk_threads_leave (); } - -JNIEXPORT void JNICALL -Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_old_create - (JNIEnv *env, jobject obj, jobject parent_obj, jstring text) -{ - GtkWidget *entry; - const char *str; - void *parent; - - parent = NSA_GET_PTR (env, parent_obj); - - str = (*env)->GetStringUTFChars (env, text, NULL); - gdk_threads_enter (); - - entry = gtk_entry_new (); - gtk_entry_set_text (GTK_ENTRY (entry), str); - - set_parent (entry, GTK_CONTAINER (parent)); - - gtk_widget_realize (entry); - connect_awt_hook (env, obj, 2, - entry->window, GTK_ENTRY (entry)->text_area); - - NSA_SET_PTR (env, obj, entry); - - gdk_threads_leave (); - (*env)->ReleaseStringUTFChars (env, text, str); -} - - JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkEntryGetSize (JNIEnv *env, jobject obj, jint cols, jintArray jdims) @@ -105,19 +75,16 @@ void *ptr; jint *dims; GtkRequisition myreq; - GtkEntry *entry; + GtkWidget *entry; ptr = NSA_GET_PTR (env, obj); dims = (*env)->GetIntArrayElements (env, jdims, 0); gdk_threads_enter (); - entry = GTK_ENTRY (ptr); - gtk_signal_emit_by_name (GTK_OBJECT (entry), "size_request", &myreq); - - dims[0]=myreq.width-150 + (cols * - gdk_char_width (GTK_WIDGET (entry)->style->font, - 'W')); + entry = GTK_WIDGET (ptr); + gtk_widget_size_request(entry, &myreq); + dims[0]=myreq.width; dims[1]=myreq.height; gdk_threads_leave (); @@ -153,31 +120,24 @@ Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkSetFont (JNIEnv *env, jobject obj, jstring jname, jint size) { - const char *xlfd; -# define FBUFSZ 200 - char buf[FBUFSZ]; + const char *font_name; void *ptr; - GdkFont * new_font; - GtkStyle * style; - GtkWidget * text; + GtkWidget *entry; + PangoFontDescription *font_desc; ptr = NSA_GET_PTR (env, obj); - text = GTK_WIDGET (ptr); - - xlfd = (*env)->GetStringUTFChars (env, jname, NULL); - snprintf(buf, FBUFSZ, xlfd, size); - (*env)->ReleaseStringUTFChars (env, jname, xlfd); + + entry = GTK_WIDGET (ptr); + font_name = (*env)->GetStringUTFChars (env, jname, NULL); + gdk_threads_enter(); - new_font = gdk_font_load(buf); /* FIXME: deprecated. Replacement? */ - if (new_font == NULL) - { - /* Fail quietly for now. */ - gdk_threads_leave(); - return; - } - style = gtk_style_copy (gtk_widget_get_style (text)); - style -> font = new_font; - gtk_widget_set_style (text , style); - /* FIXME: Documentation varies as to whether we should unref style. */ + + font_desc = pango_font_description_from_string (font_name); + pango_font_description_set_size (font_desc, size); + gtk_widget_modify_font (GTK_WIDGET(entry), font_desc); + pango_font_description_free (font_desc); + gdk_threads_leave(); + + (*env)->ReleaseStringUTFChars (env, jname, font_name); } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v retrieving revision 1.6 diff -u -r1.6 gnu_java_awt_peer_gtk_GtkWindowPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 15 Nov 2002 20:22:03 -0000 1.6 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 20 Apr 2003 18:59:58 -0000 @@ -112,7 +112,6 @@ jint height, jboolean visible) { GtkWidget *layout, *vbox; - gint x, y; gtk_window_set_policy (GTK_WINDOW (window), 1, 1, 0); gtk_widget_set_usize (window, width, height); @@ -212,9 +211,6 @@ static void setBounds (GtkWidget *widget, jint x, jint y, jint width, jint height) { - gint current_x, current_y; - gint origin_x, origin_y; - /* gdk_window_get_root_origin (widget->window, ¤t_x, ¤t_y); */ /* if (current_x != x || current_y != y) */ @@ -295,16 +291,12 @@ gint *border, gint *depth) { - GdkWindowPrivate *private; - Window xwindow; - Window xparent; - Window root; - Window *children; + GdkWindow *private; unsigned int nchildren; g_return_if_fail (window != NULL); - private = (GdkWindowPrivate*) window; + private = (GdkWindow*) window; if (x) *x = 0; if (y) @@ -318,48 +310,14 @@ if (depth) *depth = 0; - if (private->destroyed) + if (GDK_WINDOW_DESTROYED (private)) return; - - while (private->parent && ((GdkWindowPrivate*) private->parent)->parent) - private = (GdkWindowPrivate*) private->parent; - if (private->destroyed) + + private = gdk_window_get_toplevel (private); + if (GDK_WINDOW_DESTROYED(private)) return; + + gdk_window_get_geometry (private, x, y, width, height, depth); - xparent = private->xwindow; - do - { - xwindow = xparent; - if (!XQueryTree (private->xdisplay, xwindow, - &root, &xparent, - &children, &nchildren)) - return; - - if (children) - XFree (children); - } - while (xparent != root); - - if (xparent == root) - { - unsigned int ww, wh, wb, wd; - int wx, wy; - - if (XGetGeometry (private->xdisplay, xwindow, &root, &wx, &wy, &ww, &wh, &wb, &wd)) - { - if (x) - *x = wx; - if (y) - *y = wy; - if (width) - *width = ww; - if (height) - *height = wh; - if (border) - *border = wb; - if (depth) - *depth = wd; - } - } }