diff options
author | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-19 00:35:35 +0000 |
---|---|---|
committer | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-19 00:35:35 +0000 |
commit | 1bb9b6bd11c487703fe1b824ce79eefdafd392e1 (patch) | |
tree | abb4641e8aaeacc764f059098100e1aa5dde90a7 /libjava/jni | |
parent | b0f897eae0353849120b2d5fb9f990f3e65bb9c6 (diff) | |
download | ppe42-gcc-1bb9b6bd11c487703fe1b824ce79eefdafd392e1.tar.gz ppe42-gcc-1bb9b6bd11c487703fe1b824ce79eefdafd392e1.zip |
2003-02-18 Hans Boehm <Hans.Boehm@hp.com>
* gnu/awt/xlib/XToolkit.java (getFontMetrics): initialize
if necessary.
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c
(setFont, gtkSetFont): add.
gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer):
Propagate font to peer. (setFont): add FIXME comment.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
(gtkTextGetSize): fix height, width computation.
* gnu/java/awt/peer/gtk/GtkFontPeer.java (GtkFontPeer):
Make X font name a bit less bogus.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
(post_adjustment_event): Pass on GTK_SCROLL_NONE.
* java/awt/Scrollbar.java (setValues): Fix visibleAmount range check.
(processAdjustmentEvent): Adjust value.
* java/awt/FlowLayout.java (layoutContainer) Fix 2 indexing and one
logic errors.
* java/awt/Component.java (setVisible, show, hide): Call show and
hide methods in subclasses.
(getPreferredSize): don't set prefSize before we have peer.
* java/awt/TextArea.java, java/awt/TextField.java (getPreferredSize):
Guess (0,0) if we don't have peer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63077 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/jni')
4 files changed, 112 insertions, 5 deletions
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c index ebebc438ae8..e33aff046fc 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c @@ -50,3 +50,39 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create NSA_SET_PTR (env, obj, widget); } + +JNIEXPORT void JNICALL +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]; + void *ptr; + GdkFont * new_font; + GtkStyle * style; + GtkWidget * button; + GtkWidget * label; + + 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); + 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. */ + gdk_threads_leave(); +} diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c index 4b8787e7d93..9237a01b5a8 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c @@ -65,9 +65,10 @@ post_adjustment_event (GtkAdjustment *adj, struct range_scrollbar *rs) type = AWT_ADJUSTMENT_BLOCK_DECREMENT; break; case GTK_SCROLL_JUMP: + case GTK_SCROLL_NONE: /* Apparently generated when slider is dragged. */ type = AWT_ADJUSTMENT_TRACK; break; - default: /* GTK_SCROLL_NONE */ + default: /* Can this happen? If so, is this right? */ return; } diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c index 8f58623d573..27f27461518 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c @@ -135,27 +135,32 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkTextGetSize text = GTK_WIDGET (TEXT_FROM_SW (ptr)); sw = GTK_SCROLLED_WINDOW (ptr); - gtk_signal_emit_by_name (GTK_OBJECT (GTK_SCROLLED_WINDOW(sw)->hscrollbar), + 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)->vscrollbar), + 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.width+GTK_SCROLLED_WINDOW_CLASS + 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))); - dims[1] += ((rows * gdk_char_height (text->style->font, 'W')) + /* 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))); gdk_threads_leave (); @@ -207,3 +212,35 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_replaceRange (*env)->ReleaseStringUTFChars (env, contents, str); } +JNIEXPORT void JNICALL +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]; + void *ptr; + GdkFont * new_font; + GtkStyle * style; + GtkWidget * text; + + 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); + 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. */ + gdk_threads_leave(); +} diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c index 9085a57937d..658c8639bb7 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c @@ -148,3 +148,36 @@ Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_setEchoChar gdk_threads_leave (); } + +JNIEXPORT void JNICALL +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]; + void *ptr; + GdkFont * new_font; + GtkStyle * style; + GtkWidget * text; + + 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); + 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. */ + gdk_threads_leave(); +} |