This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui][PATCH] remove GtkArg
- From: Thomas Fitzsimmons <fitzsim at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Fri, 30 Jul 2004 06:01:52 -0400
- Subject: [gui][PATCH] remove GtkArg
Hi,
This patch refactors some of the peers so that we can remove the
GtkArg-based APIs. Using GTK functions directly is more
straight-forward for debugging, and more consistent with what the rest
of the peers do.
I committed this to java-gui-branch.
Tom
2004-07-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkArg.java: Remove file.
* gnu/java/awt/peer/gtk/GtkArgList.java: Remove file.
* Makefile.am (gtk_awt_peer_sources): Remove GtkArg.java and
GtkArgList.java.
(gtk_c_files): Use CAIRO_CFLAGS and PANGOFT2_CFLAGS, not _LIBS.
* Makefile.in: Regenerate.
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(create(String)): New method.
(create): Call new create method.
(getArgs): Remove method.
* gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c
(nativeCreate): Rename to create.
(gtkSetLabel): Rename to gtkButtonSetLabel.
(gtkToggleButtonSetActive): New method.
(create): Call gtkToggleButtonSetActive and gtkButtonSetLabel.
(setState): Replace set call with gtkToggleButtonSetActive.
(setLabel): Replace gtkSetLabel call with gtkButtonSetLabel.
(getArgs): Remove method.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(gtkWidgetSetSensitive): New method.
(gtkWidgetSetParent): Likewise.
(GtkComponentPeer): Call setParent, setComponentBounds and
setVisibleAndEnabled.
(setParent): New method.
(setComponentBounds): New method.
(setVisibleAndEnabled): New method.
(setEnabled): Call gtkWidgetSetSensitive.
(getArgs): Remove method.
Remove all set methods.
* gnu/java/awt/peer/gtk/GtkDialogPeer.java (create): Call
gtkWindowSetModal, setTitle and setResizable.
(getArgs): Remove method.
* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
(setComponentBounds): New method.
* gnu/java/awt/peer/gtk/GtkFramePeer.java (setResizable):
Replace set call with gtkWindowSetResizable.
(getArgs): Remove method.
(create): Call setTitle and setResizable.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(gtkWindowSetTitle): New method.
(gtkWindowSetResizable): New method.
(gtkWindowSetModal): New method.
(setParent): New method.
(setVisibleAndEnabled): New method.
(getArgs): Remove method.
(setTitle): Call gtkWindowSetTitle.
(setResizable): Call gtkWindowSetResizable.
* jni/gtk-peer/gtkpeer.h [DEBUG_LOCKING]: New define to turn on
and off locking instrumentation.
Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.361.2.30
diff -u -r1.361.2.30 Makefile.am
--- Makefile.am 29 Jul 2004 16:02:21 -0000 1.361.2.30
+++ Makefile.am 30 Jul 2004 09:44:19 -0000
@@ -237,8 +237,6 @@
gnu/java/awt/peer/gtk/GdkGraphics2D.java \
gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java \
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java \
-gnu/java/awt/peer/gtk/GtkArg.java \
-gnu/java/awt/peer/gtk/GtkArgList.java \
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
gnu/java/awt/peer/gtk/GtkCanvasPeer.java \
gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.java \
@@ -498,7 +496,7 @@
$(gtk_c_files): %.lo: %.c
$(LTCOMPILE) -c -Ijniinclude -I$(srcdir)/jni/classpath -I$(srcdir)/jni/gtk-peer \
$(PEDANTIC_CFLAGS) $(GTK_CFLAGS) $(LIBART_CFLAGS) \
- $(CAIRO_LIBS) $(PANGOFT2_LIBS) -o $@ $<
+ $(CAIRO_CFLAGS) $(PANGOFT2_CFLAGS) -o $@ $<
$(gtk_c_files): $(gtk_c_headers)
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.in,v
retrieving revision 1.385.2.30
diff -u -r1.385.2.30 Makefile.in
--- Makefile.in 29 Jul 2004 16:02:22 -0000 1.385.2.30
+++ Makefile.in 30 Jul 2004 09:44:21 -0000
@@ -328,8 +328,6 @@
gnu/java/awt/peer/gtk/GdkGraphics2D.java \
gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java \
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java \
-gnu/java/awt/peer/gtk/GtkArg.java \
-gnu/java/awt/peer/gtk/GtkArgList.java \
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
gnu/java/awt/peer/gtk/GtkCanvasPeer.java \
gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.java \
@@ -3491,8 +3489,6 @@
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GdkGraphics2D.lo \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.lo \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GdkPixbufDecoder.lo \
-@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GtkArg.lo \
-@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GtkArgList.lo \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GtkButtonPeer.lo \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GtkCanvasPeer.lo \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.lo \
@@ -3571,8 +3567,6 @@
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GdkGraphics2D.lo \
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.lo \
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GdkPixbufDecoder.lo \
-@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GtkArg.lo \
-@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GtkArgList.lo \
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GtkButtonPeer.lo \
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GtkCanvasPeer.lo \
@GTK_CAIRO_TRUE@gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.lo \
@@ -3795,8 +3789,6 @@
.deps/gnu/java/awt/peer/gtk/GdkGraphics2D.P \
.deps/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.P \
.deps/gnu/java/awt/peer/gtk/GdkPixbufDecoder.P \
-.deps/gnu/java/awt/peer/gtk/GtkArg.P \
-.deps/gnu/java/awt/peer/gtk/GtkArgList.P \
.deps/gnu/java/awt/peer/gtk/GtkButtonPeer.P \
.deps/gnu/java/awt/peer/gtk/GtkCanvasPeer.P \
.deps/gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.P \
@@ -6127,7 +6119,7 @@
$(gtk_c_files): %.lo: %.c
$(LTCOMPILE) -c -Ijniinclude -I$(srcdir)/jni/classpath -I$(srcdir)/jni/gtk-peer \
$(PEDANTIC_CFLAGS) $(GTK_CFLAGS) $(LIBART_CFLAGS) \
- $(CAIRO_LIBS) $(PANGOFT2_LIBS) -o $@ $<
+ $(CAIRO_CFLAGS) $(PANGOFT2_CFLAGS) -o $@ $<
$(gtk_c_files): $(gtk_c_headers)
Index: gnu/java/awt/peer/gtk/GtkButtonPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java,v
retrieving revision 1.8.2.3
diff -u -r1.8.2.3 GtkButtonPeer.java
--- gnu/java/awt/peer/gtk/GtkButtonPeer.java 18 May 2004 22:06:01 -0000 1.8.2.3
+++ gnu/java/awt/peer/gtk/GtkButtonPeer.java 30 Jul 2004 09:44:22 -0000
@@ -50,12 +50,13 @@
public class GtkButtonPeer extends GtkComponentPeer
implements ButtonPeer
{
- native void create ();
+ native void create (String label);
+
public native void connectJObject ();
public native void connectSignals ();
native void gtkSetFont (String name, int style, int size);
- native void gtkSetLabel(String label);
+ native void gtkSetLabel (String label);
native void gtkWidgetSetForeground (int red, int green, int blue);
native void gtkActivate ();
@@ -64,6 +65,11 @@
super (b);
}
+ void create ()
+ {
+ create (((Button) awtComponent).getLabel ());
+ }
+
public void setLabel (String label)
{
gtkSetLabel(label);
@@ -97,11 +103,4 @@
super.handleEvent (e);
}
-
- public void getArgs (Component component, GtkArgList args)
- {
- super.getArgs (component, args);
-
- args.add ("label", ((Button)component).getLabel ());
- }
}
Index: gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,v
retrieving revision 1.4.8.3
diff -u -r1.4.8.3 GtkCheckboxPeer.java
--- gnu/java/awt/peer/gtk/GtkCheckboxPeer.java 18 May 2004 22:06:01 -0000 1.4.8.3
+++ gnu/java/awt/peer/gtk/GtkCheckboxPeer.java 30 Jul 2004 09:44:22 -0000
@@ -52,39 +52,39 @@
// The current state of the GTK checkbox.
private boolean currentState;
- public native void nativeCreate (GtkCheckboxGroupPeer group,
- boolean state);
+ public native void create (GtkCheckboxGroupPeer group);
public native void nativeSetCheckboxGroup (GtkCheckboxGroupPeer group);
public native void connectSignals ();
native void gtkSetFont (String name, int style, int size);
- public native void gtkSetLabel (String label);
+ native void gtkButtonSetLabel (String label);
+ native void gtkToggleButtonSetActive (boolean is_active);
public GtkCheckboxPeer (Checkbox c)
{
super (c);
}
- // We can't fully use the ordinary getArgs code here, due to
- // oddities of this particular widget. In particular we must be
- // able to switch between a checkbutton and a radiobutton
- // dynamically.
+ // FIXME: we must be able to switch between a checkbutton and a
+ // radiobutton dynamically.
public void create ()
{
- CheckboxGroup g = ((Checkbox) awtComponent).getCheckboxGroup ();
+ Checkbox checkbox = (Checkbox) awtComponent;
+ CheckboxGroup g = checkbox.getCheckboxGroup ();
old_group = GtkCheckboxGroupPeer.getCheckboxGroupPeer (g);
- currentState = ((Checkbox)awtComponent).getState();
- nativeCreate (old_group, currentState);
+ create (old_group);
+ gtkToggleButtonSetActive (checkbox.getState ());
+ gtkButtonSetLabel (checkbox.getLabel ());
}
public void setState (boolean state)
{
if (currentState != state)
- set ("active", state);
+ gtkToggleButtonSetActive (state);
}
public void setLabel (String label)
{
- gtkSetLabel (label);
+ gtkButtonSetLabel (label);
}
public void setCheckboxGroup (CheckboxGroup group)
@@ -100,13 +100,6 @@
}
}
- public void getArgs (Component component, GtkArgList args)
- {
- super.getArgs (component, args);
- args.add ("active", ((Checkbox) component).getState ());
- args.add ("label", ((Checkbox) component).getLabel ());
- }
-
// Override the superclass postItemEvent so that the peer doesn't
// need information that we have.
public void postItemEvent (Object item, int stateChange)
Index: gnu/java/awt/peer/gtk/GtkComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v
retrieving revision 1.16.2.15
diff -u -r1.16.2.15 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java 21 Jul 2004 16:51:20 -0000 1.16.2.15
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java 30 Jul 2004 09:44:22 -0000
@@ -93,6 +93,8 @@
native void gtkWidgetSetCursor (int type);
native void gtkWidgetSetBackground (int red, int green, int blue);
native void gtkWidgetSetForeground (int red, int green, int blue);
+ native void gtkWidgetSetSensitive (boolean sensitive);
+ native void gtkWidgetSetParent (ComponentPeer parent);
native void gtkWidgetRequestFocus ();
native void gtkWidgetDispatchKeyEvent (int id, long when, int mods,
int keyCode, int keyLocation);
@@ -116,10 +118,8 @@
insets = new Insets (0, 0, 0, 0);
create ();
-
- GtkArgList args = new GtkArgList ();
- getArgs (awtComponent, args);
- args.setArgs (this);
+
+ setParent ();
connectJObject ();
connectSignals ();
@@ -132,20 +132,44 @@
setFont(awtComponent.getFont());
setCursor (awtComponent.getCursor ());
- if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0
- && awtComponent.getWidth() == 0)
- {
- int[] dims = new int[2];
- gtkWidgetGetPreferredDimensions(dims);
- ((GtkFileDialogPeer) this).setBoundsCallback((Window)awtComponent,
- awtComponent.getX(),
- awtComponent.getY(),
- dims[0], dims[1]);
- }
+
+ setComponentBounds ();
Rectangle bounds = awtComponent.getBounds ();
setBounds (bounds.x, bounds.y, bounds.width, bounds.height);
+ setVisibleAndEnabled ();
+ }
+
+ void setParent ()
+ {
+ ComponentPeer p;
+ Component component = awtComponent;
+ do
+ {
+ component = component.getParent ();
+ p = component.getPeer ();
+ }
+ while (p instanceof java.awt.peer.LightweightPeer);
+
+ if (p != null)
+ gtkWidgetSetParent (p);
+ }
+
+ /*
+ * Set the bounds of this peer's AWT Component based on dimensions
+ * returned by the native windowing system. Most Components impose
+ * their dimensions on the peers so the default implementation does
+ * nothing. However some peers, like GtkFileDialogPeer, need to
+ * pass their size back to the AWT Component.
+ */
+ void setComponentBounds ()
+ {
+ }
+
+ void setVisibleAndEnabled ()
+ {
setVisible (awtComponent.isVisible ());
+ setEnabled (awtComponent.isEnabled ());
}
public int checkImage (Image image, int width, int height,
@@ -417,7 +441,7 @@
public void setEnabled (boolean b)
{
- set ("sensitive", b);
+ gtkWidgetSetSensitive (b);
}
public void setFont (Font f)
@@ -506,45 +530,6 @@
item, stateChange));
}
- public void getArgs (Component component, GtkArgList args)
- {
- args.add ("sensitive", component.isEnabled ());
-
- ComponentPeer p;
-
- do
- {
- component = component.getParent ();
- p = component.getPeer ();
- } while (p instanceof java.awt.peer.LightweightPeer);
-
- if (p != null)
- args.add ("parent", p);
- }
-
- native void set (String name, String value);
- native void set (String name, boolean value);
- native void set (String name, int value);
- native void set (String name, float value);
- native void set (String name, Object value);
-
- void set (GtkArg arg)
- {
- String name = arg.getName ();
- Object value = arg.getValue ();
-
- if (value instanceof Boolean)
- set (name, ((Boolean)value).booleanValue ());
- else if (value instanceof Integer)
- set (name, ((Integer)value).intValue ());
- else if (value instanceof Float)
- set (name, ((Float)value).floatValue ());
- else if (value instanceof String)
- set (name, ((String) value));
- else
- set (name, value);
- }
-
public GraphicsConfiguration getGraphicsConfiguration ()
{
// FIXME: just a stub for now.
Index: gnu/java/awt/peer/gtk/GtkDialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java,v
retrieving revision 1.9.8.1
diff -u -r1.9.8.1 GtkDialogPeer.java
--- gnu/java/awt/peer/gtk/GtkDialogPeer.java 3 May 2004 19:10:59 -0000 1.9.8.1
+++ gnu/java/awt/peer/gtk/GtkDialogPeer.java 30 Jul 2004 09:44:22 -0000
@@ -85,17 +85,11 @@
{
// Create a decorated dialog window.
create (GDK_WINDOW_TYPE_HINT_DIALOG, true);
- }
-
- public void getArgs (Component component, GtkArgList args)
- {
- super.getArgs (component, args);
- Dialog dialog = (Dialog) component;
+ Dialog dialog = (Dialog) awtComponent;
- args.add ("title", dialog.getTitle ());
- args.add ("modal", dialog.isModal ());
- args.add ("allow_shrink", dialog.isResizable ());
- args.add ("allow_grow", dialog.isResizable ());
+ gtkWindowSetModal (dialog.isModal ());
+ setTitle (dialog.getTitle ());
+ setResizable (dialog.isResizable ());
}
}
Index: gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,v
retrieving revision 1.6.4.2
diff -u -r1.6.4.2 GtkFileDialogPeer.java
--- gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 20 Jul 2004 15:46:00 -0000 1.6.4.2
+++ gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 30 Jul 2004 09:44:22 -0000
@@ -42,6 +42,7 @@
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Graphics;
+import java.awt.Window;
import java.awt.event.WindowEvent;
import java.awt.peer.FileDialogPeer;
import java.io.FilenameFilter;
@@ -81,6 +82,20 @@
super (fd);
}
+ void setComponentBounds ()
+ {
+ if (awtComponent.getHeight () == 0
+ && awtComponent.getWidth () == 0)
+ {
+ int[] dims = new int[2];
+ gtkWidgetGetPreferredDimensions (dims);
+ ((GtkFileDialogPeer) this).setBoundsCallback ((Window) awtComponent,
+ awtComponent.getX (),
+ awtComponent.getY (),
+ dims[0], dims[1]);
+ }
+ }
+
public void setFile (String fileName)
{
/* If nothing changed do nothing. This usually happens because
Index: gnu/java/awt/peer/gtk/GtkFramePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java,v
retrieving revision 1.17
diff -u -r1.17 GtkFramePeer.java
--- gnu/java/awt/peer/gtk/GtkFramePeer.java 29 Jan 2004 14:34:31 -0000 1.17
+++ gnu/java/awt/peer/gtk/GtkFramePeer.java 30 Jul 2004 09:44:22 -0000
@@ -115,10 +115,9 @@
setSize (awtComponent.getWidth() - insets.left - insets.right,
awtComponent.getHeight() - insets.top - insets.bottom
+ menuBarHeight);
- set ("allow_shrink", resizable);
- set ("allow_grow", resizable);
- }
-
+ gtkWindowSetResizable (resizable);
+ }
+
protected void postInsetsChangedEvent (int top, int left,
int bottom, int right)
{
@@ -137,19 +136,13 @@
{
// Create a normal decorated window.
create (GDK_WINDOW_TYPE_HINT_NORMAL, true);
- setMenuBar(((Frame) awtComponent).getMenuBar());
- awtComponent.setForeground(java.awt.SystemColor.windowText);
- }
- public void getArgs (Component component, GtkArgList args)
- {
- super.getArgs (component, args);
+ Frame frame = (Frame) awtComponent;
- Frame frame = (Frame) component;
+ setMenuBar (frame.getMenuBar ());
- args.add ("title", frame.getTitle ());
- args.add ("allow_shrink", frame.isResizable ());
- args.add ("allow_grow", frame.isResizable ());
+ setTitle (frame.getTitle ());
+ setResizable (frame.isResizable ());
}
public void setIconImage (Image image)
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.10
diff -u -r1.10 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java 13 Jan 2004 20:54:46 -0000 1.10
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java 30 Jul 2004 09:44:22 -0000
@@ -60,6 +60,10 @@
private boolean hasBeenShown = false;
private int oldState = Frame.NORMAL;
+ native void gtkWindowSetTitle (String title);
+ native void gtkWindowSetResizable (boolean resizable);
+ native void gtkWindowSetModal (boolean modal);
+
native void create (int type, boolean decorated,
int width, int height,
GtkWindowPeer parent,
@@ -92,6 +96,16 @@
create (GDK_WINDOW_TYPE_HINT_NORMAL, false);
}
+ void setParent ()
+ {
+ setVisible (awtComponent.isVisible ());
+ setEnabled (awtComponent.isEnabled ());
+ }
+
+ void setVisibleAndEnabled ()
+ {
+ }
+
native void connectJObject ();
native void connectSignals ();
@@ -100,12 +114,6 @@
super (window);
}
- public void getArgs (Component component, GtkArgList args)
- {
- args.add ("visible", component.isVisible ());
- args.add ("sensitive", component.isEnabled ());
- }
-
native public void toBack ();
native public void toFront ();
@@ -120,7 +128,7 @@
public void setTitle (String title)
{
- set ("title", title);
+ gtkWindowSetTitle (title);
}
native void setSize (int width, int height);
@@ -132,8 +140,7 @@
// was resizable.
setSize (awtComponent.getWidth() - insets.left - insets.right,
awtComponent.getHeight() - insets.top - insets.bottom);
- set ("allow_shrink", resizable);
- set ("allow_grow", resizable);
+ gtkWindowSetResizable (resizable);
}
native void setBoundsCallback (Window window,
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,v
retrieving revision 1.8.2.3
diff -u -r1.8.2.3 gnu_java_awt_peer_gtk_GtkButtonPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 27 May 2004 18:40:20 -0000 1.8.2.3
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 30 Jul 2004 09:44:26 -0000
@@ -42,20 +42,23 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create
- (JNIEnv *env, jobject obj)
+ (JNIEnv *env, jobject obj, jstring label)
{
+ const char *c_label;
GtkWidget *button;
- /* Create global reference and save it for future use */
NSA_SET_GLOBAL_REF (env, obj);
+ c_label = (*env)->GetStringUTFChars (env, label, NULL);
+
gdk_threads_enter ();
-
- button = gtk_button_new();
+
+ button = gtk_button_new_with_label (c_label);
gtk_widget_show (button);
gdk_threads_leave ();
+ (*env)->ReleaseStringUTFChars (env, label, c_label);
NSA_SET_PTR (env, obj, button);
}
@@ -102,7 +105,7 @@
gdk_threads_enter ();
label = gtk_bin_get_child (GTK_BIN (ptr));
- gtk_label_set_text (GTK_LABEL(label), text);
+ gtk_label_set_text (GTK_LABEL (label), text);
gdk_threads_leave ();
@@ -126,9 +129,6 @@
label = gtk_bin_get_child (GTK_BIN (ptr));
- if (!label)
- return;
-
font_desc = pango_font_description_from_string (font_name);
pango_font_description_set_size (font_desc, size * dpi_conversion_factor);
@@ -165,9 +165,6 @@
label = gtk_bin_get_child (GTK_BIN(ptr));
- if (!label)
- return;
-
gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color);
gtk_widget_modify_fg (label, GTK_STATE_ACTIVE, &color);
gtk_widget_modify_fg (label, GTK_STATE_PRELIGHT, &color);
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c,v
retrieving revision 1.4.8.4
diff -u -r1.4.8.4 gnu_java_awt_peer_gtk_GtkCheckboxPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c 24 Jun 2004 05:31:39 -0000 1.4.8.4
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c 30 Jul 2004 09:44:26 -0000
@@ -43,12 +43,11 @@
static void item_toggled (GtkToggleButton *item, jobject peer);
JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeCreate
- (JNIEnv *env, jobject obj, jobject group, jboolean state)
+Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_create
+ (JNIEnv *env, jobject obj, jobject group)
{
GtkWidget *button;
- /* Create global reference and save it for future use */
NSA_SET_GLOBAL_REF (env, obj);
gdk_threads_enter ();
@@ -66,7 +65,6 @@
NSA_SET_PTR (env, group, button);
}
}
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), state);
gdk_threads_leave ();
@@ -131,6 +129,21 @@
}
JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_gtkToggleButtonSetActive
+ (JNIEnv *env, jobject obj, jboolean is_active)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter ();
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptr), is_active);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_gtkSetFont
(JNIEnv *env, jobject obj, jstring name, jint style, jint size)
{
@@ -171,26 +184,25 @@
}
JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_gtkSetLabel
+Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_gtkButtonSetLabel
(JNIEnv *env, jobject obj, jstring label)
{
- const char *str;
- void *ptr;
+ const char *c_label;
GtkWidget *label_widget;
+ void *ptr;
ptr = NSA_GET_PTR (env, obj);
- label_widget = gtk_bin_get_child (GTK_BIN(ptr));
-
- str = (*env)->GetStringUTFChars (env, label, 0);
+ c_label = (*env)->GetStringUTFChars (env, label, NULL);
gdk_threads_enter ();
- gtk_label_set_label (GTK_LABEL (label_widget), str);
+ label_widget = gtk_bin_get_child (GTK_BIN (ptr));
+ gtk_label_set_text (GTK_LABEL (label_widget), c_label);
gdk_threads_leave ();
- (*env)->ReleaseStringUTFChars (env, label, str);
+ (*env)->ReleaseStringUTFChars (env, label, c_label);
}
static void
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c,v
retrieving revision 1.6.8.2
diff -u -r1.6.8.2 gnu_java_awt_peer_gtk_GtkChoicePeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c 26 Jul 2004 20:30:56 -0000 1.6.8.2
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c 30 Jul 2004 09:44:26 -0000
@@ -48,7 +48,6 @@
GtkWidget *menu;
GtkComboBox *combobox;
- /* Create global reference and save it for future use */
NSA_SET_GLOBAL_REF (env, obj);
gdk_threads_enter ();
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v
retrieving revision 1.15.2.19
diff -u -r1.15.2.19 gnu_java_awt_peer_gtk_GtkComponentPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 21 Jul 2004 16:51:21 -0000 1.15.2.19
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 30 Jul 2004 09:44:26 -0000
@@ -473,6 +473,63 @@
}
JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetParent
+ (JNIEnv *env, jobject obj, jobject parent)
+{
+ void *ptr;
+ void *parent_ptr;
+ GtkWidget *widget;
+ GtkWidget *parent_widget;
+
+ ptr = NSA_GET_PTR (env, obj);
+ parent_ptr = NSA_GET_PTR (env, parent);
+
+ gdk_threads_enter ();
+
+ widget = GTK_WIDGET (ptr);
+ parent_widget = GTK_WIDGET (parent_ptr);
+
+ if (GTK_IS_WINDOW (parent_widget))
+ {
+ GList *children = gtk_container_children
+ (GTK_CONTAINER (GTK_BIN (parent_widget)->child));
+
+ if (GTK_IS_MENU_BAR (children->data))
+ gtk_layout_put (GTK_LAYOUT (children->next->data), widget, 0, 0);
+ else
+ gtk_layout_put (GTK_LAYOUT (children->data), widget, 0, 0);
+ }
+ else
+ if (GTK_IS_SCROLLED_WINDOW (parent_widget))
+ {
+ gtk_scrolled_window_add_with_viewport
+ (GTK_SCROLLED_WINDOW (parent_widget), widget);
+ gtk_viewport_set_shadow_type (GTK_VIEWPORT (widget->parent),
+ GTK_SHADOW_NONE);
+
+ }
+ else
+ gtk_layout_put (GTK_LAYOUT (parent_widget), widget, 0, 0);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetSensitive
+ (JNIEnv *env, jobject obj, jboolean sensitive)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter ();
+
+ gtk_widget_set_sensitive (GTK_WIDGET (ptr), sensitive);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetRequestFocus
(JNIEnv *env, jobject obj)
{
@@ -925,45 +982,6 @@
return NULL;
}
-#define WIDGET_CLASS(w) GTK_WIDGET_CLASS (GTK_OBJECT (w)->klass)
-
-void
-set_parent (GtkWidget *widget, GtkContainer *parent)
-{
- if (GTK_IS_WINDOW (parent))
- {
- GList *children = gtk_container_children
- (GTK_CONTAINER (GTK_BIN (parent)->child));
-
- if (GTK_IS_MENU_BAR (children->data))
- gtk_layout_put (GTK_LAYOUT (children->next->data), widget, 0, 0);
- else /* GTK_IS_LAYOUT (children->data) */
- gtk_layout_put (GTK_LAYOUT (children->data), widget, 0, 0);
- }
- else
- if (GTK_IS_SCROLLED_WINDOW (parent))
- {
-/* if (WIDGET_CLASS (widget)->set_scroll_adjustments_signal) */
-/* gtk_container_add (GTK_CONTAINER (parent), widget); */
-/* else */
-/* { */
- gtk_scrolled_window_add_with_viewport
- (GTK_SCROLLED_WINDOW (parent), widget);
- gtk_viewport_set_shadow_type (GTK_VIEWPORT (widget->parent),
- GTK_SHADOW_NONE);
-/* } */
-
- }
-/* gtk_layout_put */
-/* (GTK_LAYOUT (GTK_BIN (parent)->child), widget, 0, 0); */
-
-/* if (GTK_IS_SCROLLED_WINDOW (parent)) */
-/* gtk_layout_put */
-/* (GTK_LAYOUT (GTK_BIN (GTK_BIN (parent)->child)->child), widget, 0, 0); */
- else
- gtk_layout_put (GTK_LAYOUT (parent), widget, 0, 0);
-}
-
JNIEXPORT jboolean JNICALL
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isEnabled
(JNIEnv *env, jobject obj)
@@ -995,105 +1013,6 @@
return retval;
}
-JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_String_2
- (JNIEnv *env, jobject obj, jstring jname, jstring jvalue)
-{
- const char *name;
- const char *value;
- void *ptr;
-
- ptr = NSA_GET_PTR (env, obj);
- name = (*env)->GetStringUTFChars (env, jname, NULL);
- value = (*env)->GetStringUTFChars (env, jvalue, NULL);
-
- gdk_threads_enter();
- g_object_set(ptr, name, value, NULL);
- gdk_threads_leave();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
- (*env)->ReleaseStringUTFChars (env, jvalue, value);
-}
-
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Z
- (JNIEnv *env, jobject obj, jstring jname, jboolean value)
-{
- const char *name;
- void *ptr;
-
- ptr = NSA_GET_PTR (env, obj);
-
- name = (*env)->GetStringUTFChars (env, jname, NULL);
-
- gdk_threads_enter();
- g_object_set(ptr, name, value, NULL);
- gdk_threads_leave();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
-}
-
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2I
- (JNIEnv *env, jobject obj, jstring jname, jint value)
-{
- const char *name;
- void *ptr;
-
- ptr = NSA_GET_PTR (env, obj);
- name = (*env)->GetStringUTFChars (env, jname, NULL);
-
- gdk_threads_enter();
- g_object_set(ptr, name, value, NULL);
- gdk_threads_leave();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
-}
-
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2F
- (JNIEnv *env, jobject obj, jstring jname, jfloat value)
-{
- const char *name;
- void *ptr;
-
- ptr = NSA_GET_PTR (env, obj);
- name = (*env)->GetStringUTFChars (env, jname, NULL);
-
- gdk_threads_enter();
- g_object_set(ptr, name, value, NULL);
- gdk_threads_leave();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
-}
-
-JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_Object_2
- (JNIEnv *env, jobject obj1, jstring jname, jobject obj2)
-{
- const char *name;
- void *ptr1, *ptr2;
-
- ptr1 = NSA_GET_PTR (env, obj1);
- ptr2 = NSA_GET_PTR (env, obj2);
-
- name = (*env)->GetStringUTFChars (env, jname, NULL);
-
- /* special case to catch where we need to set the parent */
- if (!strcmp (name, "parent"))
- {
- gdk_threads_enter ();
- set_parent (GTK_WIDGET (ptr1), GTK_CONTAINER (ptr2));
- gdk_threads_leave ();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
- return;
- }
-
- gdk_threads_enter();
- g_object_set(ptr1, name, ptr2, NULL);
- gdk_threads_leave();
-
- (*env)->ReleaseStringUTFChars (env, jname, name);
-}
-
static gboolean
filter_expose_event_handler (GtkWidget *widget, GdkEvent *event, jobject peer)
{
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.24.2.10
diff -u -r1.24.2.10 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 10 Jul 2004 05:15:41 -0000 1.24.2.10
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 30 Jul 2004 09:44:26 -0000
@@ -104,7 +104,6 @@
insets = (*env)->GetIntArrayElements (env, jinsets, 0);
insets[0] = insets[1] = insets[2] = insets[3] = 0;
- /* Create global reference and save it for future use */
NSA_SET_GLOBAL_REF (env, obj);
gdk_threads_enter ();
@@ -163,6 +162,56 @@
}
JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetTitle
+ (JNIEnv *env, jobject obj, jstring title)
+{
+ const char *c_title;
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ c_title = (*env)->GetStringUTFChars (env, title, NULL);
+
+ gdk_threads_enter ();
+
+ gtk_window_set_title (GTK_WINDOW (ptr), c_title);
+
+ gdk_threads_leave ();
+
+ (*env)->ReleaseStringUTFChars (env, title, c_title);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetResizable
+ (JNIEnv *env, jobject obj, jboolean resizable)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter ();
+
+ gtk_window_set_policy (GTK_WINDOW (ptr), resizable, resizable, FALSE);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkWindowPeer_gtkWindowSetModal
+ (JNIEnv *env, jobject obj, jboolean modal)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter ();
+
+ gtk_window_set_modal (GTK_WINDOW (ptr), modal);
+
+ gdk_threads_leave ();
+}
+
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetVisible
(JNIEnv *env, jobject obj, jboolean visible)
{
Index: jni/gtk-peer/gtkpeer.h
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gtkpeer.h,v
retrieving revision 1.12.8.3
diff -u -r1.12.8.3 gtkpeer.h
--- jni/gtk-peer/gtkpeer.h 27 May 2004 18:40:21 -0000 1.12.8.3
+++ jni/gtk-peer/gtkpeer.h 30 Jul 2004 09:44:27 -0000
@@ -459,4 +459,19 @@
const char *label;
};
+#define DEBUG_LOCKING 0
+
+#if DEBUG_LOCKING
+#define gdk_threads_enter() \
+{ \
+ g_print ("lock: %s, %d\n", __FILE__, __LINE__); \
+ gdk_threads_enter (); \
+}
+#define gdk_threads_leave() \
+{ \
+ g_print ("unlock: %s, %d\n", __FILE__, __LINE__); \
+ gdk_threads_leave (); \
+}
+#endif
+
#endif /* __GTKPEER_H */