[kaffe] CVS kaffe (robilad): Ressynced with GNU Classpath: qt peers updated, awt, swing fixes

Kaffe CVS cvs-commits at kaffe.org
Wed Aug 17 15:55:08 PDT 2005


PatchSet 6836 
Date: 2005/08/17 22:38:17
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Ressynced with GNU Classpath: qt peers updated, awt, swing fixes

Members: 
	ChangeLog:1.4360->1.4361 
	include/Makefile.am:1.110->1.111 
	include/Makefile.in:1.239->1.240 
	kaffe/kaffevm/boehm-gc/boehm/acinclude.m4:1.2->1.3 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:1.6->1.7 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c:1.8->1.9 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c:1.7->1.8 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c:1.7->1.8 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:1.14->1.15 
	libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:1.22->1.23 
	libraries/clib/awt/classpath-qt/Makefile.am:1.2->1.3 
	libraries/clib/awt/classpath-qt/Makefile.in:1.2->1.3 
	libraries/clib/awt/classpath-qt/eventmethods.cpp:1.1->1.2(DEAD) 
	libraries/clib/awt/classpath-qt/eventmethods.h:INITIAL->1.1 
	libraries/clib/awt/classpath-qt/keybindings.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/keybindings.h:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtbuttonpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtcanvaspeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtcheckboxpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtchoicepeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtcomponent.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtcomponentpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtdialogpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtembeddedwindowpeer.cpp:INITIAL->1.1 
	libraries/clib/awt/classpath-qt/qtframepeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtgraphics.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtimage.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtlabelpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtlistpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtmenupeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtpanelpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtscrollbarpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtscrollpanepeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qttextareapeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qttextfieldpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/qtwindowpeer.cpp:1.1->1.2 
	libraries/clib/awt/classpath-qt/slotcallbacks.cpp:1.2->1.3 
	libraries/clib/awt/classpath-qt/slotcallbacks.h:1.1->1.2 
	libraries/javalib/Makefile.am:1.382->1.383 
	libraries/javalib/Makefile.in:1.472->1.473 
	libraries/javalib/all.files:1.152->1.153 
	libraries/javalib/gnu/java/awt/ClasspathToolkit.java:1.12->1.13 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkClipboard.java:1.5->1.6 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkClipboardNotifier.java:INITIAL->1.1 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkContainerPeer.java:1.6->1.7 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java:1.9->1.10 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkFramePeer.java:1.11->1.12 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkImage.java:1.10->1.11 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkSelection.java:INITIAL->1.1 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java:1.20->1.21 
	libraries/javalib/gnu/java/awt/peer/gtk/GtkWindowPeer.java:1.11->1.12 
	libraries/javalib/gnu/java/awt/peer/qt/QtButtonPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtCheckboxPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtChoicePeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtComponentGraphics.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtComponentPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtContainerPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtDialogPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java:INITIAL->1.1 
	libraries/javalib/gnu/java/awt/peer/qt/QtFontPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtFramePeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtGraphics.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtImage.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtImageGraphics.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtListPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtMenuBarPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtMenuItemPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtMenuPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtScrollbarPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtTextAreaPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtTextFieldPeer.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtToolkit.java:1.1->1.2 
	libraries/javalib/gnu/java/awt/peer/qt/QtWindowPeer.java:1.1->1.2 
	libraries/javalib/java/awt/Component.java:1.58->1.59 
	libraries/javalib/java/awt/Container.java:1.40->1.41 
	libraries/javalib/java/awt/EventQueue.java:1.18->1.19 
	libraries/javalib/java/awt/FontMetrics.java:1.18->1.19 
	libraries/javalib/java/awt/Frame.java:1.28->1.29 
	libraries/javalib/java/awt/TextComponent.java:1.7->1.8 
	libraries/javalib/java/awt/Window.java:1.35->1.36 
	libraries/javalib/java/lang/Character.java:1.26->1.27 
	libraries/javalib/javax/swing/JComponent.java:1.27->1.28 
	libraries/javalib/javax/swing/JList.java:1.13->1.14 
	libraries/javalib/javax/swing/JPasswordField.java:1.7->1.8 
	libraries/javalib/javax/swing/JTree.java:1.26->1.27 
	libraries/javalib/javax/swing/plaf/basic/BasicLabelUI.java:1.7->1.8 
	libraries/javalib/javax/swing/plaf/basic/BasicLookAndFeel.java:1.22->1.23 
	libraries/javalib/javax/swing/plaf/basic/BasicTableUI.java:1.13->1.14 
	libraries/javalib/javax/swing/plaf/basic/BasicTextUI.java:1.18->1.19 
	libraries/javalib/javax/swing/plaf/basic/BasicTreeUI.java:1.17->1.18 
	libraries/javalib/javax/swing/text/BoxView.java:1.1->1.2 
	libraries/javalib/javax/swing/text/ComponentView.java:1.3->1.4 
	libraries/javalib/javax/swing/text/CompositeView.java:1.1->1.2 
	libraries/javalib/javax/swing/text/GlyphView.java:1.1->1.2 
	libraries/javalib/javax/swing/text/IconView.java:1.1->1.2 
	libraries/javalib/javax/swing/text/PasswordView.java:1.4->1.5 
	libraries/javalib/javax/swing/text/PlainView.java:1.9->1.10 
	libraries/javalib/javax/swing/text/View.java:1.11->1.12 
	libraries/javalib/javax/swing/tree/DefaultTreeCellRenderer.java:1.10->1.11 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4360 kaffe/ChangeLog:1.4361
--- kaffe/ChangeLog:1.4360	Wed Aug 17 00:17:34 2005
+++ kaffe/ChangeLog	Wed Aug 17 22:38:17 2005
@@ -1,3 +1,329 @@
+2005-08-18  Dalibor Topic  <robilad at kaffe.org>
+
+	Resynced with GNU Classpath.
+
+	2005-08-17  Anthony Balkissoon  <abalkiss at redhat.com>
+
+        * javax/swing/JList.java:
+        (indexToLocation): Implemented.
+        (getLastVisibleIndex): If the last index in the list is showing and
+        there is extra room at the bottom, return the last index, not -1.
+
+	2005-08-17  Lillian Angel <langel at redhat.com>
+
+        * javax/swing/plaf/basic/BasicTreeUI.java
+        (getCellLocation): Added in check if node is a leaf.
+        Shouldnt call getChildCount if a leaf. May cause NPE.
+        (paintRecursive): Likewise.
+        (paintControlIcons): Likewise.
+        (findNode): Likewise.
+        (getNextNode): Likewise.
+        (getPreviousNode): Likewise.
+        (getNextSibling): Likewise.
+        (getPreviousSibling): Likewise.
+
+	2005-08-17  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/tree/DefaultTreeCellRenderer.java
+        (paint): paints the background and border of cell.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        Reported by Ingo Proetel  <proetel at aicas.com>
+        * java/awt/image/DirectColorModel.java
+        (createCompatibleWritableRaster): Added argument check.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * java/awt/FontMetrics.java
+        (charWidth(int)): Correctly map Unicode indices to char[] here.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * java/lang/Character.java
+        (toChars(int)): New JDK1.5 method.
+        (toChars(int, char[], int)): New JDK1.5 method.
+        (charCount): New JDK1.5 method.
+        (isSupplementaryCodePoint): New JDK1.5 method.
+        (isValidCodePoint): New JDK1.5 method.
+
+	2005-08-17  Lillian Angel  <langel at redhat.com>
+
+        * java/awt/FontMetrics.java
+        (charWidth): Reversed Roman's patch, was not compiling.
+        * javax/swing/tree/DefaultTreeCellRenderer.java
+        (getTreeCellRendererComponent): Set Opaque to true for
+        painting reasons.
+
+	2005-08-17  Mark Wielaard  <mark at klomp.org>
+
+        * gnu/java/awt/peer/qt/QtFramePeer.java (setIcon): Mark non-native
+        and add FIXME.
+        (setMaximizedBounds): Likewise.
+        * include/gnu_java_awt_peer_qt_QtFramePeer.h: Regenerated.
+        * native/jni/qt-peer/.cvsignore: New file.
+        * native/jni/qt-peer/Makefile.am (libqtpeer_la_SOURCES):
+        Remove eventmethods.h.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * javax/swing/plaf/basic/BasicLabelUI.java
+        (paint): Don't paint the border here. If there is a border to
+        be painted, this is usually performed in JComponent.paint().
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * java/awt/FontMetrics.java
+        (charWidth(int)): Correctly map Unicode indices to char[] here.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * java/awt/Component.java
+        This applies to various variants of the repaint() methods:
+        (repaint): If the component is not showing, forward repaint
+        request to the parent.
+
+	2005-08-17  Roman Kennke  <roman at kennke.org>
+
+        * javax/swing/plaf/basic/BasicLabelUI.java
+        (paint): Don't fill the background here. If the label is opaque
+        then the background is filled in ComponentUI.update(), otherwise
+        it must not be touched.
+
+	2005-08-17  Thomas Fitzsimmons  <fitzsim at redhat.com>
+
+        * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+        (setComponentBounds): Don't post COMPONENT_RESIZED event.
+
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+        (setBoundsCallbackID): Remove variable.
+        (cp_gtk_window_init_jni): Don't initialize setBoundsCallbackID.
+        (setBoundsCallback): Remove method.
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
+        (setMenuBarPeer): Check if menubar is NULL.
+        (setMenuBarWidth): Likewise.
+        * java/awt/Window.java (dispatchEventImpl): Validate upon
+        receiving a COMPONENT_RESIZED event.
+        (setBoundsCallback): Remove method.
+        * include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: Regenerate.
+        * gnu/java/awt/peer/gtk/GtkWindowPeer.java (setBoundsCallback):
+        Remove method declaration.
+        (postConfigureEvent): Separate handling of resizes and moves.
+        Call setSize and post COMPONENT_RESIZED event.
+        * gnu/java/awt/peer/gtk/GtkFramePeer.java (postConfigureEvent):
+        Separate handling of resizes and moves.  Call setSize.
+        * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+        (setComponentBounds): Call setSize and post COMPONENT_RESIZED
+        event.
+        * gnu/java/awt/peer/gtk/GtkContainerPeer.java (isValidating):
+        Remove field.
+
+	2005-08-16  Sven de Marothy  <sven at physto.se>
+
+        * gnu/java/awt/peer/qt/QtButtonPeer.java
+        * gnu/java/awt/peer/qt/QtCheckboxPeer.java
+        * gnu/java/awt/peer/qt/QtChoicePeer.java
+        * gnu/java/awt/peer/qt/QtComponentGraphics.java
+        * gnu/java/awt/peer/qt/QtComponentPeer.java
+        * gnu/java/awt/peer/qt/QtContainerPeer.java
+        * gnu/java/awt/peer/qt/QtDialogPeer.java
+        * gnu/java/awt/peer/qt/QtFontPeer.java
+        * gnu/java/awt/peer/qt/QtFramePeer.java
+        * gnu/java/awt/peer/qt/QtGraphics.java
+        * gnu/java/awt/peer/qt/QtImage.java
+        * gnu/java/awt/peer/qt/QtImageGraphics.java
+        * gnu/java/awt/peer/qt/QtListPeer.java
+        * gnu/java/awt/peer/qt/QtMenuBarPeer.java
+        * gnu/java/awt/peer/qt/QtMenuItemPeer.java
+        * gnu/java/awt/peer/qt/QtMenuPeer.java
+        * gnu/java/awt/peer/qt/QtScrollbarPeer.java
+        * gnu/java/awt/peer/qt/QtTextAreaPeer.java
+        * gnu/java/awt/peer/qt/QtTextFieldPeer.java
+        * gnu/java/awt/peer/qt/QtToolkit.java
+        * gnu/java/awt/peer/qt/QtWindowPeer.java
+        * native/jni/qt-peer/keybindings.cpp
+        * native/jni/qt-peer/keybindings.h
+        * native/jni/qt-peer/qtbuttonpeer.cpp
+        * native/jni/qt-peer/qtcanvaspeer.cpp
+        * native/jni/qt-peer/qtcheckboxpeer.cpp
+        * native/jni/qt-peer/qtchoicepeer.cpp
+        * native/jni/qt-peer/qtcomponent.cpp
+        * native/jni/qt-peer/qtcomponentpeer.cpp
+        * native/jni/qt-peer/qtdialogpeer.cpp
+        * native/jni/qt-peer/qtframepeer.cpp
+        * native/jni/qt-peer/qtgraphics.cpp
+        * native/jni/qt-peer/qtimage.cpp
+        * native/jni/qt-peer/qtlabelpeer.cpp
+        * native/jni/qt-peer/qtlistpeer.cpp
+        * native/jni/qt-peer/qtmenupeer.cpp
+        * native/jni/qt-peer/qtpanelpeer.cpp
+        * native/jni/qt-peer/qtscrollbarpeer.cpp
+        * native/jni/qt-peer/qtscrollpanepeer.cpp
+        * native/jni/qt-peer/qttextareapeer.cpp
+        * native/jni/qt-peer/qttextfieldpeer.cpp
+        * native/jni/qt-peer/qtwindowpeer.cpp
+        * native/jni/qt-peer/slotcallbacks.cpp
+        * native/jni/qt-peer/slotcallbacks.h
+        Reindented, Transmogrified and Wielaardituded.
+        * gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
+        * native/jni/qt-peer/eventmethods.h
+        * native/jni/qt-peer/qtembeddedwindowpeer.cpp
+        * native/jni/qt-peer/slotcallbacks.moc.h
+        New files
+        * native/jni/qt-peer/eventmethods.cpp
+        * native/jni/qt-peer/slotcallbacks.moc
+        Removed.
+
+	2005-08-16  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/text/PasswordView.java
+        (drawUnselectedText): Fixed so the password is drawn correctly
+        in the text box and no * characters are drawn before anything
+        was typed.
+
+	2005-08-16  Mark Wielaard  <mark at klomp.org>
+
+        * gnu/java/awt/peer/gtk/GtkClipboard.java: Reimplemented.
+        * gnu/java/awt/peer/gtk/GtkClipboardNotifier.java: New class.
+        * gnu/java/awt/peer/gtk/GtkSelection.java: New class.
+        * gnu/java/awt/peer/gtk/GtkImage.java (GtkImage(Pointer)): New
+        constructor.
+        (createFromPixbuf): New private native method.
+        * gnu/java/awt/peer/gtk/GtkToolkit.java (systemClipboard): Removed.
+        (getSystemClipboard): Do security check and return
+        GtkClipboard.getInstance().
+        * include/Makefile.am: Add gnu_java_awt_peer_gtk_GtkSelection.h.
+        * include/gnu_java_awt_peer_gtk_GtkClipboard.h: Regenerated.
+        * include/gnu_java_awt_peer_gtk_GtkImage.h: Regenerated.
+        * include/gnu_java_awt_peer_gtk_GtkSelection.h: New header file.
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:
+        Reimplemented.
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
+        (Java_gnu_java_awt_peer_gtk_GtkImage_createFromPixbuf): New
+
+	2005-08-16  Anthony Balkissoon  <abalkiss at redhat.com>
+
+        * javax/swing/plaf/basic/BasicTableUI.java:
+        (ActionListenerProxy): Replaced type TableAction with parent type
+        ActionListener to avoid Semantic errors.
+
+	2005-08-16  Anthony Balkissoon  <abalkiss at redhat.com>
+
+        * javax/swing/plaf/basic/BasicLookAndFeel.java:
+        (initComponentDefaults): Fixed typo.
+        * javax/swing/plaf/basic/BasicTableUI.java:
+        (installKeyboardActions): Replaced calls to registerKeyboardAction with
+        additions to an explicit InputMap-ActionMap pair and then set this
+        pair as the parent pair to the JTable's.  This matches the JDK where
+        the UI Input-Action pairs are the parents of the component's.
+        (ActionListenerProxy): New class.
+
+	2005-08-16  Mark Wielaard  <mark at klomp.org>
+
+        * examples/gnu/classpath/examples/datatransfer/Demo.java:
+        Document and implement ItemListener and FlavorListener.
+        (flavors): New field.
+        (details): New field.
+        (Demo): Add more space, add the flavors panel and flavor listener.
+        (createTextPanel): Smaller and wider.
+        (createFlavorsPanel): New private method.
+        (flavorsChanged): New public method.
+        (itemStateChanged): Likewise.
+        (ImageComponent.ImageComponent): Smaller default.
+        (ObjectComponent.ObjectComponent): Make wider.
+        (FlavorsComponent): New static class.
+        (FlavorDetailsComponent): Likewise.
+
+	2005-08-16  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/plaf/basic/BasicLookAndFeel.java:
+        Changed font for PasswordField because textbox was
+        being drawn at an awkward height.
+        * javax/swing/text/PasswordView.java
+        (getPreferredSpan): Implemented
+        (modelToView): likewise.
+        (viewToModel): partially implemented.
+
+	2005-08-16  Jeroen Frijters  <jeroen at frijters.net>
+
+        * java/awt/Component.java
+        (dispatchEventImpl): Always call peer.handleEvent().
+
+	2005-08-16  Jeroen Frijters  <jeroen at frijters.net>
+
+        * java/awt/Container.java
+        (addImpl, remove): Only repaint if the container is showing.
+
+	2005-08-16  Mark Wielaard  <mark at klomp.org>
+
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+        (Java_gnu_java_awt_peer_gtk_GtkToolkit_nativeQueueEmpty): Removed.
+
+	2005-08-15  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/JPasswordField.java
+        (getText): Fixed the length of the string to retrieve.
+
+	2005-08-15  Sven de Marothy  <sven at physto.se>
+
+        * java/awt/TextComponent.java
+        (select): Fix typo.
+
+	2005-08-15  Anthony Balkissoon  <abalkiss at redhat.com>
+
+        * javax/swing/JComponent.java:
+        (processKeyEvent): Added functionality for processing key events in
+        non-focused components using the WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
+        field.
+        * javax/swing/plaf/basic/BasicTableUI.java:
+        (installKeyboardActions): Changed key bindings to be registered as
+        WHEN_ANCESTOR_OF_FOCUSED_COMPONENT rather than as WHEN_FOCUSED.
+        (TableAction.actionPerformed): If the key action is anything besides
+        "start editing" then we stop editing if we are doing so.  Repaint the
+        table at the end of this method.
+
+	2005-08-15  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/JPasswordField.java
+        (echoCharIsSet): Fixed this to work according to API.
+        (getText): Implemented
+        (getText): Implemented
+        (getPassword): Implemented
+        (paramString): Implemented
+
+	2005-08-15  Thomas Fitzsimmons  <fitzsim at redhat.com>
+
+        * gnu/java/awt/ClasspathToolkit.java (nativeQueueEmpty): Remove
+        method.
+        (wakeNativeQueue): Likewise.
+        (iterateNativeQueue): Likewise.
+        * gnu/java/awt/peer/gtk/GtkToolkit.java (static): Start GTK main
+        thread.
+        (nativeQueueEmpty): Remove method.
+        (wakeNativeQueue): Likewise.
+        (iterateNativeQueue): Likewise.
+        (gtkMain): New method.
+        * include/gnu_java_awt_peer_gtk_GtkToolkit.h: Regenerate.
+        * java/awt/EventQueue.java: Remove references to ClasspathToolkit.
+        * java/awt/Frame.java (fireDummyEvent): Remove method.
+        Remove calls to fireDummyEvent.
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
+        (dispose): Don't wake up main thread.
+        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c: Remove
+        single-thread code.
+
+	2005-08-15  Lillian Angel  <langel at redhat.com>
+
+        * javax/swing/JTree.java
+        (expandPath): called fireTreeWillExpand and fireTreeExpanded
+        since it is not required that the calling class fires these
+        events.
+        (collapsePath): Likewise.
+        * javax/swing/plaf/basic/BasicTreeUI.java
+        (mouseClicked): Took out code that called fireTreeWillExpand/
+        fireTreeWillCollapse and fireTreeExpanded/fireTreeCollapsed.
+        (keyPressed): Likewise.
+
 2005-08-17  Andreas Tobler  <a.tobler at schweiz.ch>
 
 	* m4/acx_pthread.m4: Detect -pthreads first. Fixes
Index: kaffe/include/Makefile.am
diff -u kaffe/include/Makefile.am:1.110 kaffe/include/Makefile.am:1.111
--- kaffe/include/Makefile.am:1.110	Sat Aug 13 15:38:52 2005
+++ kaffe/include/Makefile.am	Wed Aug 17 22:38:20 2005
@@ -177,6 +177,7 @@
 	gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
 	gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
 	gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
+	gnu_java_awt_peer_gtk_GtkSelection.h \
 	gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
 	gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
 	gnu_java_awt_peer_gtk_GtkToolkit.h \
@@ -198,6 +199,7 @@
         gnu_java_awt_peer_qt_QtComponentPeer.h \
         gnu_java_awt_peer_qt_QtContainerPeer.h \
         gnu_java_awt_peer_qt_QtDialogPeer.h \
+	gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h \
         gnu_java_awt_peer_qt_QtFileDialogPeer.h \
         gnu_java_awt_peer_qt_QtFontMetrics.h \
         gnu_java_awt_peer_qt_QtFontPeer.h \
Index: kaffe/include/Makefile.in
diff -u kaffe/include/Makefile.in:1.239 kaffe/include/Makefile.in:1.240
--- kaffe/include/Makefile.in:1.239	Sat Aug 13 15:38:52 2005
+++ kaffe/include/Makefile.in	Wed Aug 17 22:38:22 2005
@@ -541,6 +541,7 @@
 	gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
 	gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
 	gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
+	gnu_java_awt_peer_gtk_GtkSelection.h \
 	gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
 	gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
 	gnu_java_awt_peer_gtk_GtkToolkit.h \
@@ -562,6 +563,7 @@
         gnu_java_awt_peer_qt_QtComponentPeer.h \
         gnu_java_awt_peer_qt_QtContainerPeer.h \
         gnu_java_awt_peer_qt_QtDialogPeer.h \
+	gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h \
         gnu_java_awt_peer_qt_QtFileDialogPeer.h \
         gnu_java_awt_peer_qt_QtFontMetrics.h \
         gnu_java_awt_peer_qt_QtFontPeer.h \
Index: kaffe/kaffe/kaffevm/boehm-gc/boehm/acinclude.m4
diff -u kaffe/kaffe/kaffevm/boehm-gc/boehm/acinclude.m4:1.2 kaffe/kaffe/kaffevm/boehm-gc/boehm/acinclude.m4:1.3
--- kaffe/kaffe/kaffevm/boehm-gc/boehm/acinclude.m4:1.2	Tue Aug 24 17:59:44 2004
+++ kaffe/kaffe/kaffevm/boehm-gc/boehm/acinclude.m4	Wed Aug 17 22:38:23 2005
@@ -17,7 +17,7 @@
 # [0-9]+[.][0-9]+(alpha[0.9]+)? 
 # in lex syntax; if there is no alpha number, GC_ALPHA_VERSION is empty
 #
-AC_DEFUN(GC_SET_VERSION, [
+AC_DEFUN([GC_SET_VERSION], [
   AC_MSG_CHECKING(GC version numbers)
   GC_VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\([[0-9]][[0-9]]*\)[[.]].*$/\1/g'`
   GC_VERSION_MINOR=`echo $PACKAGE_VERSION | sed 's/^[[^.]]*[[.]]\([[0-9]][[0-9]]*\).*$/\1/g'`
Index: kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
diff -u kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:1.6 kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:1.7
--- kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:1.6	Tue Jul 26 16:22:02 2005
+++ kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c	Wed Aug 17 22:38:23 2005
@@ -1,5 +1,5 @@
 /* gtkclipboard.c
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -36,169 +36,739 @@
 exception statement from your version. */
 
 
+#include "jcl.h"
 #include "gtkpeer.h"
 #include "gnu_java_awt_peer_gtk_GtkClipboard.h"
+#include "gnu_java_awt_peer_gtk_GtkSelection.h"
 
-static jmethodID stringSelectionReceivedID;
-static jmethodID stringSelectionHandlerID;
-static jmethodID selectionClearID;
-
-static void selection_received_cb (GtkWidget *, GtkSelectionData *,
-                                   guint, gpointer);
-static void selection_get_cb (GtkWidget *, GtkSelectionData *, guint,
-                              guint, gpointer);
-static gint selection_clear_cb (GtkWidget *, GdkEventSelection *);
+#define OBJECT_TARGET 1
+#define TEXT_TARGET   2
+#define IMAGE_TARGET  3
+#define URI_TARGET    4
 
-static GtkWidget *clipboard;
-static jobject cb_obj;
+static GtkClipboard *clipboard;
 
-JNIEXPORT void JNICALL 
-Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env, 
-							 jobject obj)
+/* Simple id to keep track of the selection we are currently managing. */
+static int current_selection = 0;
+
+/* Whether we "own" the clipboard. And may clear it. */
+static int owner = 0;
+
+static jclass gtk_clipboard_class;
+static jmethodID setSystemContentsID;
+
+static jobject gtk_clipboard_instance = NULL;
+static jmethodID provideContentID;
+static jmethodID provideTextID;
+static jmethodID provideImageID;
+static jmethodID provideURIsID;
+
+static jstring stringTarget;
+static jstring imageTarget;
+static jstring filesTarget;
+
+static void
+cp_gtk_clipboard_owner_change (GtkClipboard *clipboard __attribute__((unused)),
+			       GdkEvent *event __attribute__((unused)),
+			       gpointer user_data __attribute__((unused)))
 {
+  /* These are only interesting when we are not the owner. Otherwise
+     we will have the set and clear functions doing the updating. */
+  JNIEnv *env = cp_gtk_gdk_env ();
+  if (!owner)
+    (*env)->CallStaticVoidMethod (env, gtk_clipboard_class,
+				  setSystemContentsID);
+}
+
+JNIEXPORT jboolean JNICALL 
+Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env,
+							 jclass gtkclipboard,
+							 jstring string,
+							 jstring image,
+							 jstring files)
+{
+  GdkDisplay* display;
+  jboolean can_cache;
+
+  gtk_clipboard_class = gtkclipboard;
+  setSystemContentsID = (*env)->GetStaticMethodID (env, gtk_clipboard_class,
+						   "setSystemContents",
+						   "()V");
+  if (setSystemContentsID == NULL)
+    return JNI_FALSE;
+
+  stringTarget = (*env)->NewGlobalRef(env, string);
+  imageTarget = (*env)->NewGlobalRef(env, image);
+  filesTarget = (*env)->NewGlobalRef(env, files);
+
   gdk_threads_enter ();
+  clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
 
-  if (!stringSelectionReceivedID)
+  display = gtk_clipboard_get_display (clipboard);
+  if (gdk_display_supports_selection_notification (display))
     {
-      jclass gtkclipboard;
-
-      gtkclipboard = (*env)->FindClass (env, 
-					"gnu/java/awt/peer/gtk/GtkClipboard");
-      stringSelectionReceivedID = (*env)->GetMethodID (env, gtkclipboard,
-						    "stringSelectionReceived",
-						    "(Ljava/lang/String;)V");
-      stringSelectionHandlerID = (*env)->GetMethodID (env, gtkclipboard,
-						      "stringSelectionHandler",
-						      "()Ljava/lang/String;");
-      selectionClearID = (*env)->GetMethodID (env, gtkclipboard,
-					      "selectionClear", "()V");
+      g_signal_connect (clipboard, "owner-change",
+			G_CALLBACK (cp_gtk_clipboard_owner_change), NULL);
+      gdk_display_request_selection_notification (display,
+						  GDK_SELECTION_CLIPBOARD);
+      can_cache = JNI_TRUE;
     }
+  else
+    can_cache = JNI_FALSE;
+  gdk_threads_leave ();
 
-  cb_obj = (*env)->NewGlobalRef (env, obj);
-
-  clipboard = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  return can_cache;
+}
 
-  g_signal_connect (G_OBJECT(clipboard), "selection_received",
-                    G_CALLBACK (selection_received_cb), NULL);
+static void
+cp_gtk_clipboard_get_func (GtkClipboard *clipboard __attribute__((unused)),
+			   GtkSelectionData *selection,
+			   guint info,
+			   gpointer user_data __attribute__((unused)))
+{
+  JNIEnv *env = cp_gtk_gdk_env ();
+  
+  if (info == OBJECT_TARGET)
+    {
+      const gchar *target_name;
+      jstring target_string;
+      jbyteArray bytes;
+      jint len;
+      jbyte *barray;
+
+      target_name = gdk_atom_name (selection->target);
+      if (target_name == NULL)
+	return;
+      target_string = (*env)->NewStringUTF (env, target_name);
+      if (target_string == NULL)
+	return;
+      bytes = (*env)->CallObjectMethod(env,
+				       gtk_clipboard_instance,
+				       provideContentID,
+				       target_string);
+      if (bytes == NULL)
+	return;
+      len = (*env)->GetArrayLength(env, bytes);
+      if (len <= 0)
+	return;
+      barray = (*env)->GetByteArrayElements(env, bytes, NULL);
+      if (barray == NULL)
+	return;
+      gtk_selection_data_set (selection, selection->target, 8,
+			      (guchar *) barray, len);
 
-  g_signal_connect (G_OBJECT(clipboard), "selection_clear_event",
-                    G_CALLBACK (selection_clear_cb), NULL);
+      (*env)->ReleaseByteArrayElements(env, bytes, barray, 0);
 
-  gtk_selection_add_target (clipboard, GDK_SELECTION_PRIMARY, 
-			    GDK_TARGET_STRING, 0);
+    }
+  else if (info == TEXT_TARGET)
+    {
+      jstring string;
+      const gchar *text;
+      int len;
+      string = (*env)->CallObjectMethod(env,
+					gtk_clipboard_instance,
+					provideTextID);
+      if (string == NULL)
+	return;
+      len = (*env)->GetStringUTFLength (env, string);
+      if (len == -1)
+	return;
+      text = (*env)->GetStringUTFChars (env, string, NULL);
+      if (text == NULL)
+	return;
 
-  g_signal_connect (G_OBJECT(clipboard), "selection_get",
-                    G_CALLBACK (selection_get_cb), NULL);
+      gtk_selection_data_set_text (selection, text, len);
+      (*env)->ReleaseStringUTFChars (env, string, text);
+    }
+  else if (info == IMAGE_TARGET)
+    {
+      jobject gtkimage;
+      GdkPixbuf *pixbuf = NULL;
+      
+      gtkimage = (*env)->CallObjectMethod(env,
+					  gtk_clipboard_instance,
+					  provideImageID);
+      if (gtkimage == NULL)
+	return;
+      
+      pixbuf = cp_gtk_image_get_pixbuf (env, gtkimage);
+      if (pixbuf != NULL)
+	{
+	  gtk_selection_data_set_pixbuf (selection, pixbuf);
+
+	  /* if the GtkImage is offscreen, this is a temporary pixbuf
+	     which should be thrown out. */
+	  if(cp_gtk_image_is_offscreen (env, gtkimage) == JNI_TRUE)
+	    gdk_pixbuf_unref (pixbuf);
+	}
+    }
+  else if (info == URI_TARGET)
+    {
+      jobjectArray uris;
+      jint count;
+      int i;
+      gchar **list;
+
+      uris = (*env)->CallObjectMethod(env,
+				      gtk_clipboard_instance,
+				      provideURIsID);
+      if (uris == NULL)
+	return;
+      count = (*env)->GetArrayLength (env, uris);
+      if (count <= 0)
+	return;
+
+      list = (gchar **) JCL_malloc (env, (count + 1) * sizeof (gchar *));
+      for (i = 0; i < count; i++)
+	{
+	  const char *text;
+	  jstring uri;
+	  
+	  /* Mark NULL in so case of some error we can find the end. */
+	  list[i] = NULL;
+	  uri = (*env)->GetObjectArrayElement (env, uris, i);
+	  if (uri == NULL)
+	    break;
+	  text = (*env)->GetStringUTFChars (env, uri, NULL);
+	  if (text == NULL)
+	    break;
+	  list[i] = strdup (text);
+	  (*env)->ReleaseStringUTFChars (env, uri, text);
+	}
+
+      if (i == count)
+	{
+	  list[count] = NULL;
+	  gtk_selection_data_set_uris (selection, list);
+	}
+
+      for (i = 0; list[i] != NULL; i++)
+	free (list[i]);
+      JCL_free (env, list);
+    }
+}
 
-  gdk_threads_leave ();
+static void
+cp_gtk_clipboard_clear_func (GtkClipboard *clipboard __attribute__((unused)),
+			     gpointer user_data)
+{
+  if (owner && (int) user_data == current_selection)
+    {
+      JNIEnv *env = cp_gtk_gdk_env();
+      owner = 0;
+      (*env)->CallStaticVoidMethod (env, gtk_clipboard_class,
+				    setSystemContentsID);
+    }
 }
 
 JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkClipboard_requestStringConversion
-  (JNIEnv *env __attribute__((unused)), jclass clazz __attribute__((unused)))
+Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent
+(JNIEnv *env,
+ jobject instance,
+ jobjectArray mime_array,
+ jboolean add_text,
+ jboolean add_images __attribute__((unused)),
+ jboolean add_uris __attribute__((unused)))
 {
+  GtkTargetList *target_list;
+  GList *list;
+  GtkTargetEntry *targets;
+  gint n, i;
+
   gdk_threads_enter ();
+  target_list = gtk_target_list_new (NULL, 0);
+
+  if (mime_array != NULL)
+    {
+      n = (*env)->GetArrayLength (env, mime_array);
+      for (i = 0; i < n; i++)
+	{
+	  const char *text;
+	  jstring target;
+	  GdkAtom atom;
+
+	  target = (*env)->GetObjectArrayElement (env, mime_array, i);
+	  if (target == NULL)
+	    break;
+	  text = (*env)->GetStringUTFChars (env, target, NULL);
+	  if (text == NULL)
+	    break;
 
-  gtk_selection_convert (clipboard, GDK_SELECTION_PRIMARY, 
-			 GDK_TARGET_STRING, GDK_CURRENT_TIME);
+	  atom = gdk_atom_intern (text, FALSE);
+	  gtk_target_list_add (target_list, atom, 0, OBJECT_TARGET);
 
+	  (*env)->ReleaseStringUTFChars (env, target, text);
+	}
+    }
+
+  /* Add extra targets that gtk+ can provide/translate for us. */
+  if (add_text)
+    gtk_target_list_add_text_targets (target_list, TEXT_TARGET);
+  if (add_images)
+    gtk_target_list_add_image_targets (target_list, IMAGE_TARGET, TRUE);
+  if (add_uris)
+    gtk_target_list_add_uri_targets (target_list, URI_TARGET);
+
+  /* Turn list into a target table. */
+  n = g_list_length (target_list->list);
+  if (n > 0)
+    {
+      targets = g_new (GtkTargetEntry, n);
+      for (list = target_list->list, i = 0;
+	   list != NULL;
+	   list = list->next, i++)
+	{
+	  GtkTargetPair *pair = (GtkTargetPair *) list->data;
+	  targets[i].target = gdk_atom_name (pair->target);
+	  targets[i].flags = pair->flags;
+	  targets[i].info = pair->info;
+	}
+
+      /* Set the targets plus callback functions and ask for the clipboard
+	 to be stored when the application exists. */
+      current_selection++;
+      if (gtk_clipboard_set_with_data (clipboard, targets, n,
+				       cp_gtk_clipboard_get_func,
+				       cp_gtk_clipboard_clear_func,
+				       (gpointer) current_selection))
+	{
+	  owner = 1;
+	  if (gtk_clipboard_instance == NULL)
+	    {
+	      JNIEnv *env = cp_gtk_gdk_env ();
+	      gtk_clipboard_instance =  (*env)->NewGlobalRef(env, instance);
+
+	      provideContentID
+		= (*env)->GetMethodID (env, gtk_clipboard_class,
+				       "provideContent",
+				       "(Ljava/lang/String;)[B");
+	      if (provideContentID == NULL)
+		return;
+
+	      provideTextID
+		= (*env)->GetMethodID (env, gtk_clipboard_class,
+				       "provideText", "()Ljava/lang/String;");
+	      if (provideTextID == NULL)
+		return;
+
+	      provideImageID
+		= (*env)->GetMethodID (env, gtk_clipboard_class,
+				       "provideImage",
+				       "()Lgnu/java/awt/peer/gtk/GtkImage;");
+	      if (provideImageID == NULL)
+		return;
+
+	      provideURIsID
+		= (*env)->GetMethodID (env, gtk_clipboard_class,
+				       "provideURIs",
+				       "()[Ljava/lang/String;");
+	      if (provideURIsID == NULL)
+		return;
+	    }
+	  gtk_clipboard_set_can_store (clipboard, NULL, 0);
+	}
+      else
+	{
+	  owner = 0;
+	  (*env)->CallStaticVoidMethod (env, gtk_clipboard_class,
+					setSystemContentsID);
+	}
+
+      for (i = 0; i < n; i++)
+	g_free (targets[i].target);
+      g_free (targets);
+    }
+  else if (owner)
+    {
+      gtk_clipboard_clear (clipboard);
+      owner = 0;
+    }
+
+  gtk_target_list_unref (target_list);
   gdk_threads_leave ();
 }
 
+
+/* GtkSelection native methods. Put here for convenience since they
+   need access to the current clipboard. */
+
+static jmethodID mimeTypesAvailableID;
+
+/* Note this is actually just a GtkClipboardReceivedFunc, not a real
+   GtkClipboardTargetsReceivedFunc, see requestMimeTypes. */
 static void
-selection_received_cb (GtkWidget *widget __attribute__((unused)),
-                       GtkSelectionData *selection_data __attribute__((unused)),
-                       guint time __attribute__((unused)),
-                       gpointer data __attribute__((unused)))
+cp_gtk_clipboard_targets_received (GtkClipboard *clipboard
+				   __attribute__((unused)),
+				   GtkSelectionData *target_data,
+				   gpointer selection)
 {
-  /* Check to see if retrieval succeeded  */
-  if (selection_data->length < 0
-      || selection_data->type != GDK_SELECTION_TYPE_STRING)
+  GdkAtom *targets = NULL;
+  gint targets_len = 0;
+  gchar **target_strings = NULL;
+  jobjectArray strings = NULL;
+  int strings_len = 0;
+  gboolean include_text = FALSE;
+  gboolean include_image = FALSE;
+  gboolean include_uris = FALSE;
+  jobject selection_obj = (jobject) selection;
+  JNIEnv *env = cp_gtk_gdk_env ();
+
+  if (target_data != NULL && target_data->length > 0)
     {
-      gdk_threads_leave ();
+      include_text = gtk_selection_data_targets_include_text (target_data);
+      include_image = gtk_selection_data_targets_include_image (target_data,
+								TRUE);
+      if (gtk_selection_data_get_targets (target_data, &targets, &targets_len))
+	{
+	  int i;
+	  GdkAtom uri_list_atom = gdk_atom_intern ("text/uri-list", FALSE);
+	  target_strings = g_new (gchar*, targets_len);
+	  if (target_strings != NULL)
+	    for (i = 0; i < targets_len; i++)
+	      {
+		gchar *name =  gdk_atom_name (targets[i]);
+		if (strchr (name, '/') != NULL)
+		  {
+		    target_strings[i] = name;
+		    strings_len++;
+		    if (! include_uris && targets[i] == uri_list_atom)
+		      include_uris = TRUE;
+		  }
+		else
+		  target_strings[i] = NULL;
+	      }
+	}
+
+      if (target_strings != NULL)
+	{
+	  int i = 0, j = 0;
+	  jclass stringClass;
+	  
+	  if (include_text)
+	    strings_len++;
+	  if (include_image)
+	    strings_len++;
+	  if (include_uris)
+	    strings_len++;
+	  
+	  stringClass = (*env)->FindClass (env, "java/lang/String");
+	  strings = (*env)->NewObjectArray (env, strings_len, stringClass,
+					    NULL);
+	  if (strings != NULL)
+	    {
+	      if (include_text)
+		(*env)->SetObjectArrayElement (env, strings, i++,
+					       stringTarget);
+	      if (include_image)
+		(*env)->SetObjectArrayElement (env, strings, i++,
+					       imageTarget);
+	      if (include_uris)
+		(*env)->SetObjectArrayElement (env, strings, i++,
+					       filesTarget);
+	      
+	      while(i < strings_len)
+		{
+		  if (target_strings[j] == NULL)
+		    j++;
+		  else
+		    {
+		      jstring string;
+		      string = (*env)->NewStringUTF (env,

*** Patch too long, truncated ***




More information about the kaffe mailing list