On 30/10/2009 09:06, Dees wrote:
Your reply is much appreciated Jon. I will try to be more specific
about the problem in further mails.

On Thu, Oct 29, 2009 at 8:11 PM, Jon TURNEY<jon.tur...@dronecode.org.uk>  wrote:
On 28/10/2009 05:57, Dees wrote:

I have developed a Java application involving jTree with extensive
drag and drop support, which runs correctly in my Linux box. However,
when I switch to a windows box and access the same Linux box using
cygwin x-server, the drag and drop in jTree stops working.
Interestingly, rest of the application still works fine. After
analyzing a bit I found that x-server is able to recognize the drag
event but fails to recognize a drop event.

Details?

OS : Suse Linux Enterprise Server 10 (i586)
Version : 10
Patch level : 3
Other version information:
Java : JDK 5
Cygwin setup-version: 2.573.2.3
Also tried using Xming 6.9.0.31 ssh same Linux setup from Windows, but
that also doesn't solve the problem.


Is there any setting, which should be done prior to running the Java
swing applications?

Here is a sample code which behaves in exactly same way.
http://www.java2s.com/Code/Java/Swing-JFC/TreeDragandDrop.htm

I have no idea how to use that java code to reproduce the problem you are
seeing.

Using the above java code in Linux:
1. Download and Install Java Development Toolkit on your Linux box
(Java sun download site:
http://java.sun.com/javase/downloads/index.jsp), if you do not have it
already.
2. Save the sample code in the above link with the file name
TreeTester.java, say in /home/user/
3. Navigate to TreeTester.java from shell, and compile the java code:
        # cd /home/user/
        # /usr/java/jdk1.5.0_14/bin/javac TreeTester.java
    Ignore any warnings of deprecated APIs.
4. This will create a few .class files in /home/user/ directory. Final
step is to run the Java code, using:
        # /usr/java/jdk1.5.0_14/bin/java -classpath . TreeTester
    This will open up a GUI, with a jTree each on left and right pane.
You can drag and drop any of the leaf nodes from one jTree to the root
node of the other jTree and this should add a new node in the other
jTree. You will get messages on console for the operations being
performed. Now ssh the same box using cygwin/xming from any other
windows box, and run the application using command in step 4. You
should be able to drag (a small icon will come under cursor indicating
that something is being dragged) but when you will drop it, the new
node would not be added to the tree. Thats where lies my problem!!!

Thanks for the test case and instructions, this makes it much easier for me to try it out.

However, this testcase and your jar archive both work fine for me (using Xserver 1.7.1-3)!

May be my problem is related to some setting. Though, not sure.
Has anybody come across something similar? What should be done then?
Please let me know.

No it's probably a bug in Cygwin/X.  But you're going to need to be a lot
more specific about the problem before any progress can be made on fixing
it.

Also, putting some debug messages in the code lets me conclude that
it's the drop event which is not being recognized, as the main control
never reaches there.

There is not really any drop event, as far as the X server is concerned, just mouse click and motion events, which are passed on to you application (which has a framework to interpret them as dragging and dropping an item).

Now having a better idea of the problem, it seems less likely it is an Xserver bug at all. The only Xserver cause I can think of would be if it was somehow not sending the correct events to your applications window, which you could test using xev -id <your applications window id> (you can use xwininfo to find the window id)

--
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/

Reply via email to