|
|
Home » U++ Library support » U++ Library : Other (not classified elsewhere) » More GLCtrl
|
|
|
|
|
|
Re: More GLCtrl [message #18768 is a reply to message #18748] |
Mon, 20 October 2008 14:26 |
mdelfede
Messages: 1307 Registered: September 2007
|
Ultimate Contributor |
|
|
luzr wrote on Sun, 19 October 2008 18:20 | I believe all should be fix now.
Note: DHCtrl was never intended to have children... Therefore, rather than rewriting half of CtrlCore, I have solved the issue by restructruing GLCtrl - it has now DHCtrl as child (and derives from ParentCtrl).
Thanks for hint and a quality testcase - I have put it to upptst for further use
Mirek
|
Eh, do you remember when some monthes ago I told you CtrlCore would need some strong refactoring ?
Writing Linux GLCtrl was a nightmare because of the impossibility of having childs of windowed controls. I introduced them with some dirty hacks on Ctrl stuffs trying to not break previous behaviours, but just to Linux part.... and it was quite complicated because of optimizations in ctrlcore classes. And I know it's not a perfect implementation.....
I've seen some similar (but differently handled) hacks on windows DHCtrl code.
But I agree with you, it would be a *big* effort to clean up CtrlCore classes.
For other people not knowing the problem, OpenGL needs an underlying OS window (X11 or Windows). The problem arose because UPP controls don't have an underlying window (besides top ones) for speed (and other) purposes and were not foreseen to contain controls with a window handler.
All CtrlCore classes assume that no child control can have a window handle, so they use often the fact that there's no parent window to assume the control is a top one; in case of DHCtrl that's wrong. All hacks on linux part were aimed to remove this assumption.
Max
EDIT : btw, IMHO, the best would be to go in the direction on which child windowed controls are allowed. That's done on Linux part, it was not easy and it's not completely well implemented, but can be done. That would be a more uniform behaviour and would allow to embed some fancy windowed controls without the need of a wrapper class, and allowing them to be also containers for upp controls. (Linux DHCtrl can do almost all about it).
Max
[Updated on: Mon, 20 October 2008 14:30] Report message to a moderator
|
|
|
|
|
Re: More GLCtrl [message #18777 is a reply to message #18775] |
Mon, 20 October 2008 21:01 |
|
mirek
Messages: 13975 Registered: November 2005
|
Ultimate Member |
|
|
kodos wrote on Mon, 20 October 2008 14:02 | Ok, I have tested the new code and it works great so far except that there are no more events on the GLCtrl itself
I have fixed the mouse events with the following code:
virtual Image MouseEvent(int event, Point p, int zdelta, dword keyflags) { return ctrl->MouseEvent(event, p, zdelta, keyflags); }
in the GLPane class. But I haven't found a function like that for the key events, and I don't know if I broke something else
|
Ops, correct. Hopefuly fixed (check soon). (You forget to translate for view offset, BTW...)
I think keyboard input can be effectively solved by adding "NoWantFocus" to GLPane constructor (there is no way how GLPane could get focus after that point...).
Mirek
|
|
|
Re: More GLCtrl [message #18781 is a reply to message #18776] |
Mon, 20 October 2008 22:17 |
mdelfede
Messages: 1307 Registered: September 2007
|
Ultimate Contributor |
|
|
luzr wrote on Mon, 20 October 2008 20:51 |
mdelfede wrote on Mon, 20 October 2008 08:26 |
luzr wrote on Sun, 19 October 2008 18:20 | I believe all should be fix now.
Note: DHCtrl was never intended to have children... Therefore, rather than rewriting half of CtrlCore, I have solved the issue by restructruing GLCtrl - it has now DHCtrl as child (and derives from ParentCtrl).
Thanks for hint and a quality testcase - I have put it to upptst for further use
Mirek
|
Eh, do you remember when some monthes ago I told you CtrlCore would need some strong refactoring ?
Writing Linux GLCtrl was a nightmare because of the impossibility of having childs of windowed controls.
|
IMO you do not really appreciate nightmares if it would actually be directly possible....
Quote: |
But I agree with you, it would be a *big* effort to clean up CtrlCore classes.
|
IMO, worst thing is that it would be *wrong* effort.
Most of complication in CtrlCore are caused by necessary "impedance mismatch" between U++ and underlaying host system API. "clean up" would most likely produced code that is nice, but does not work. Making it work would then bring us to the current status again...
Mirek
|
Well.... I'd not call it a "wrong" effort. It would make control behaviour more uniform between windowed and non-windowed controls, from the user's point of view.
BTW, by now it's not a big concern, being GLCtrl the only windowed child control in UPP... but it can change in future
IMHO to have the "correct" behaviour is not impossible, but it does indeed require some work, which maybe isn't worth the effort at the moment.
Max
|
|
|
Re: More GLCtrl [message #19004 is a reply to message #18650] |
Tue, 04 November 2008 20:13 |
kodos
Messages: 111 Registered: March 2008
|
Experienced Member |
|
|
Hi,
I have refactored the GLCtrl a little bit so that the platform specific code is just in the GLPane and not in GLCtrl class. I have also fixed a bug on Linux with the resize event not being fired.
While debugging this problem I have found that the methods AfterTerminate and Resize from the linux DHCtrl are never actually called. I think we should remove them.
-
Attachment: GLCtrl.zip
(Size: 5.48KB, Downloaded 244 times)
[Updated on: Tue, 04 November 2008 20:18] Report message to a moderator
|
|
|
|
|
|
|
Re: More GLCtrl [message #19062 is a reply to message #18650] |
Sat, 08 November 2008 12:31 |
cocob
Messages: 156 Registered: January 2008
|
Experienced Member |
|
|
it looks like a non-initialized variable (because it works in debug mode) But i can't find it...
The most surprising is that now it works with MINGW, but with MSC9 i have always the problem
cocob
[Updated on: Sat, 08 November 2008 12:34] Report message to a moderator
|
|
|
|
Re: More GLCtrl [message #19079 is a reply to message #18650] |
Mon, 10 November 2008 15:02 |
cocob
Messages: 156 Registered: January 2008
|
Experienced Member |
|
|
After some investigations, The bug is present on all windows plateform with all compilers. And it was working with an old version of GLCtrl. I will try to find the modification in svn
[Updated on: Mon, 10 November 2008 15:03] Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Fri Apr 26 05:41:33 CEST 2024
Total time taken to generate the page: 0.02140 seconds
|
|
|