> Thanks for finding out valuable information about this bug. What is > the reason that not all machines are affected? Your description > sounds like slow machines should be more likely to be affected, > because they need more time to get the work done, which occurs when > switching the directory. However the bug has been confirmed on > machines with quite different speed. So there must be some other > reason why the bug doesn't appear on every machine.
I'm not sure the speed of the machine is a factor. I think the common elements in the scenario are that 1. a mouse click happens, causing konqueror to execute something which takes a lot of I/O time ( in this case, loading a different view plugin ), before even considering the next events. 2. the user more or less immediately releases the mouse after clicking, but the event gets ignored until the above I/O is finished. 3. when the I/O is finished, the mouse has moved a lot already 4. the next events are processed, and here we reach the problem: the Qt event loop first gets a big mouse movement event, and only then, it gets the mouse release event. this causes konqueror to interpret the user's actions as the start of a drag operation. Thinking about it, I'm wondering why the mouse release event wasn't interpreted as the end of the d'n'd operation, but well, that isn't the case, perhaps d'n'd does a mouse grab, and only accepts events occuring after that ? So I guess it's not so much the machine that has to be slow, but erm, the I/O time caused. The people who couldn't reproduce it, may not have tried to reproduce it with directories that cause switching of plugins, may have had a machine so fast, a mouse so slow, or a hand so steady that no big enough mouse movement happened before the I/O was finished. > Does it depend on the version of xlibs? Are only some versions > affected? I have so far only tested it on xlibs 4.2.1-15 > Can you suggest a workaround? I have no idea. I would consider looking at the code which merges subsequent mouse movement events, to see whether it does not try to merge events between which a mouse release occurred, but other than that, I can't think of anything. cheers domi