View previous topic :: View next topic |
Author |
Message |
Paul-Jan Site Admin
Joined: 08 Aug 2004 Posts: 3066 Location: Lage Zwaluwe
|
Posted: Sat Feb 06, 2010 1:23 pm Post subject: 3D viewport error when click-move near->outside border |
|
|
Fik submitted a patch for this (bug 2925379, patch 2946176), but I am stumbling over some minor issues preventing me from committing things as they are. Help everyone!
- The code isn't compatible with Delphi 6/7, as those versions don't expose the onMouseLeave event. Delphi 7 is still very popular so I'm trying to keep things backwards compatible (it's also the compiler used to build the distribution binaries )
- I introduced the event manually (using CM_MOUSELEAVE, under a conditional version define), and I think the patch-code is called the way it is supposed to, but like Fik's patch comment stated: the problem with the mouse cursor disappearing on the viewport (until the next click) is still there. My problem is that is the only issue I ever had in the first place, so what is it that you guys are experiencing that this patch does fix?
Without reproduction it's rather hard to tell if I rewrote the patch correctly. I could just commit things or supply an alternative patch to test, but you guys could then only verify the delphi 2006+ code path anyway. So I really need reproduction I guess... |
|
Back to top |
|
|
chronozphere DeleD PRO user
Joined: 20 Jun 2006 Posts: 1010 Location: Netherlands
|
Posted: Sat Feb 06, 2010 1:50 pm Post subject: |
|
|
fik's patch seems to work for me (Turbo delphi 2006). Nice work!
Two sidenotes:
- It doesn't fix the "entire" problem, because the other views suffer from the same problem
- Allthough the camera doesn't go bezerk anymore, the cursor is still hidden, which is not what we want. |
|
Back to top |
|
|
Paul-Jan Site Admin
Joined: 08 Aug 2004 Posts: 3066 Location: Lage Zwaluwe
|
Posted: Sat Feb 06, 2010 6:40 pm Post subject: |
|
|
Explain "the camera goes bezerk", because for me it doesn't, it stays fixed when I move the cursor outside the window (starting at the border)... I just get the cursor artifact.
I trust Fik's code works fine, but what I need to know is if _my_ (delphi 7 compatible) version also works fine. What I can do is committing this "blind"and ask you guys to test the beta binaries on monday.
I don't care much for the other views, you are much much more likely to trigger this issue in the 3D view, right? |
|
Back to top |
|
|
chronozphere DeleD PRO user
Joined: 20 Jun 2006 Posts: 1010 Location: Netherlands
|
Posted: Sat Feb 06, 2010 7:19 pm Post subject: |
|
|
Quote: |
Explain "the camera goes bezerk", because for me it doesn't, it stays fixed when I move the cursor outside the window (starting at the border)... I just get the cursor artifact.
|
Well.. maybe the camera doesn't go bezerk. The mouse is invisible and the camera will move when you move your mouse. There is no apparent way to get out of this situations (but right click works).
After fik's patch the camera doesn't move anymore (when the bug is "activated"), but the cursor is still invisible.
Quote: |
I don't care much for the other views, you are much much more likely to trigger this issue in the 3D view, right?
|
All viewports are controlled by right-dragging, so chances are equal.
With some good abstraction, we can fix the all the viewports in the same time (but I don't think these abstractions are there , Every viewport has its own mouse handling, nothing generic AFAIK ) |
|
Back to top |
|
|
fik Member
Joined: 11 Oct 2006 Posts: 303
|
Posted: Sun Feb 07, 2010 10:09 pm Post subject: |
|
|
Hi sorry patch not compatible with delphi 6/7 didn't know that didn't expose mouse leave event.
Here is a little video to show the problem behaviour.
http://www.mediafire.com/download.php?3gmigjjddg1
The first time move is taken out of active screen slowly and then released. the second is moved out very fast and then released . As you can see normal(first )mouse returns to active screen properly. Wrong (second ) it does not return when button released and when you bring mouse over with no buttons pressed it moves view in strange ways and mouse jumps.
Hope this helps you see to recreate bug on your machine.
Have never noticed that you can cause this in other views to but yes it does now I try it.
Edit:- I have done more investigation and its because when you move mouse out of active window fast enough(not always very fast ). The mouse and location gets lost.
Mouseup never gets called, not sure if this is windows or delphi fault. Suspect windows as call gets made to mouse leave. When with mouse button down it shold be locked, so that this dosen't happen.
I now have a fix which cures all problem including cursor, but it still uses mouseleave. If delphi6/7 doesn't support this I have no idea how to rectify
This fault happens to me even with compiled exe downloaded from sourceforge so not caused by versions compiled just with Delphi 2006. Suggestions ? |
|
Back to top |
|
|
Paul-Jan Site Admin
Joined: 08 Aug 2004 Posts: 3066 Location: Lage Zwaluwe
|
Posted: Mon Feb 08, 2010 6:58 am Post subject: |
|
|
Awesome, please submit your new code as a patch! I'll simply make the code delphi 6/7 compatible again, then commit it.
I want the code to be delphi 7 compatible at the project level, but that doesn't mean you (as a valued contributor) have to personally worry about it too much, it's much easier to fix for someone with that Delphi version available. |
|
Back to top |
|
|
AWM Mars Member
Joined: 06 Jan 2010 Posts: 1195 Location: Wilts England
|
Posted: Mon Feb 08, 2010 4:03 pm Post subject: |
|
|
I have noticed the cursor out of the window event, I can sometimes 'cure' it by pressing ESC on the keyboard. I suspect its a nVidia driver issue, as I have encountered several 'issues' recently after updating my GC driver. These seem to have gone away since, I rolled back to Oct 2009's driver. _________________ Politeness is priceless when received, cost nothing to own or give, yet some cannot afford.
Checkout:
http://www.awm.mars.yourinside.com/
http://www.bccservices.co.uk
http://www.localtradecheck.co.uk
Last edited by AWM Mars on Mon Feb 08, 2010 10:32 pm; edited 1 time in total |
|
Back to top |
|
|
Paul-Jan Site Admin
Joined: 08 Aug 2004 Posts: 3066 Location: Lage Zwaluwe
|
Posted: Mon Feb 08, 2010 7:03 pm Post subject: |
|
|
Well, the good thing is it isn't driver-specific, it (i.e. the cursor disappearing) occurs on NVidia, ATI and Intel (shudder) type graphics cards. I'm sure we are pretty close to solving this one, it is just going to be closed whether the fix will make it into 2.42 or a subsequent version. |
|
Back to top |
|
|
fik Member
Joined: 11 Oct 2006 Posts: 303
|
Posted: Tue Feb 09, 2010 12:51 am Post subject: |
|
|
Just uploaded new fix. Think this is better as keeps cursor.
AWM Mars as Paul-Jan says this is not a driver issue. It seems to be a windows messaging problem when mouse moves to fast while being dragged out of a window. |
|
Back to top |
|
|
AWM Mars Member
Joined: 06 Jan 2010 Posts: 1195 Location: Wilts England
|
Posted: Tue Feb 09, 2010 3:17 pm Post subject: |
|
|
Oh well, glad you guys found the wee bug. I did have issues with the OpenGL driver causing crashing in DeleD. When I rolled back to the Oct 2009 version, the crashing stopped.
It was related to selecting a vertice and deleting it. Seems if its connected to others forming a chain, it crashes. I also work round this now, by deleting from an end, not in the middle, except when its a circle or a linked shape, then I try and select the all the linked parts in one go. _________________ Politeness is priceless when received, cost nothing to own or give, yet some cannot afford.
Checkout:
http://www.awm.mars.yourinside.com/
http://www.bccservices.co.uk
http://www.localtradecheck.co.uk |
|
Back to top |
|
|
|