Page 1 of 2
[Bug]two issue after resizing application window
Posted: Tue Nov 17, 2009 09:59
by Cloudage
before i resize the application window,everything just fine.but after i did it...
1.the titlebar of a framewindow become strange when i drag it to different position,like this:
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/1-2.jpg)
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/2-3.jpg)
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/3-1.jpg)
2.after i drag the framewindow a little,the editbox on it will not receive my typing anymore.
i created this window via code:
Code: Select all
using namespace CEGUI;
WindowManager &mgr = WindowManager::getSingleton();
ConsoleWindow = (FrameWindow*)mgr.createWindow(GUISTYLENAME"/FrameWindow","Console");
ConsoleWindow->getTitlebar()->setText("Console");
ConsoleWindow->setWidth(UDim(0,LAYOUT_FRAMEWIDTH));
ConsoleWindow->setHeight(UDim(0,LAYOUT_FRAMEHEIGHT));
ConsoleWindow->setHorizontalAlignment(HA_CENTRE);
ConsoleWindow->setVerticalAlignment(VA_CENTRE);
ConsoleWindow->setAlwaysOnTop(true);
ConsoleWindow->setSizingEnabled(false);
ConsoleWindow_Editbox = (Editbox*)mgr.createWindow(GUISTYLENAME"/Editbox","Console/Editbox");
ConsoleWindow_Editbox->setHeight(UDim(0,LAYOUT_INPUTBOXHEIGHT));
ConsoleWindow_Editbox->setWidth(UDim(0,LAYOUT_FRAMEWIDTH-LAYOUT_MARGIN*2));
ConsoleWindow_Editbox->setXPosition(UDim(0,LAYOUT_MARGIN));
ConsoleWindow_Editbox->setYPosition(UDim(0,LAYOUT_FRAMEHEIGHT-LAYOUT_INPUTBOXHEIGHT-LAYOUT_MARGIN));
float titlebarHeight = ConsoleWindow->getTitlebar()->getPixelSize().d_height;
ConsoleWindow_MultiLineEditbox = (MultiLineEditbox*)mgr.createWindow(GUISTYLENAME"/MultiLineEditbox","Console/MultiLineEditbox");
ConsoleWindow_MultiLineEditbox->setXPosition(UDim(0,LAYOUT_MARGIN));
ConsoleWindow_MultiLineEditbox->setYPosition(UDim(0,titlebarHeight+LAYOUT_MARGIN));
ConsoleWindow_MultiLineEditbox->setWidth(UDim(0,LAYOUT_FRAMEWIDTH-LAYOUT_MARGIN*2));
ConsoleWindow_MultiLineEditbox->setHeight(UDim(0,LAYOUT_FRAMEHEIGHT-titlebarHeight-LAYOUT_INPUTBOXHEIGHT-LAYOUT_MARGIN*3));
ConsoleWindow_MultiLineEditbox->setReadOnly(true);
ConsoleWindow->addChildWindow(ConsoleWindow_MultiLineEditbox);
ConsoleWindow->addChildWindow(ConsoleWindow_Editbox);
ConsoleWindow->subscribeEvent(FrameWindow::EventCloseClicked,Event::Subscriber(&ConsoleWindow_OnCloseClicked));
ConsoleWindow_Editbox->subscribeEvent(Editbox::EventTextAccepted,Event::Subscriber(&ConsoleWindowEditbox_OnTextAccepted));
System::getSingleton().getGUISheet()->addChildWindow(ConsoleWindow);
ConsoleWindow_Editbox->activate();
and when my application window size changed,i did these:
Code: Select all
if(renderer==0)return;
CEGUI::Size sz = CEGUI::Size(w,h);
//renderer->setDisplaySize(sz);
CEGUI::System::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::FontManager::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::ImagesetManager::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::MouseCursor::getSingleton().notifyDisplaySizeChanged(sz);
is it a bug or i just made some mistake?
Thanks.
ps: i use 'QuadraticLook'.
Re: Bug?two issue after resizing application window
Posted: Thu Dec 03, 2009 10:10
by CrazyEddie
Could be something broken in CEGUI as regards to the window alignment in use, not sure.
Post your version info, please.
CE.
Re: Bug?two issue after resizing application window
Posted: Sat Dec 05, 2009 06:17
by Cloudage
hi CE,nice to see you back.
i use CEGUI 0.7.1 from the download page on the wiki.
and i also tried the TaharezLook,it have the same problem,but WindowsLook will cause a error as below:
Code: Select all
05/12/2009 14:13:43 (Std) Started creation of Scheme from XML specification:
05/12/2009 14:13:43 (Std) ---- CEGUI GUIScheme name: WindowsLookSkin
05/12/2009 14:13:43 (Std) Started creation of Imageset from XML specification:
05/12/2009 14:13:43 (Std) ---- CEGUI Imageset name: WindowsLook
05/12/2009 14:13:43 (Std) ---- Source texture file: WindowsLook.tga in resource group: (Default)
05/12/2009 14:13:43 (Std) Started creation of Font from XML specification:
05/12/2009 14:13:43 (Std) ---- CEGUI font name: MSYH_10
05/12/2009 14:13:43 (Std) ---- Font type: Pixmap
05/12/2009 14:13:43 (Std) ---- Source file: MSYH_10.imageset in resource group: (Default)
05/12/2009 14:13:43 (Std) Started creation of Imageset from XML specification:
05/12/2009 14:13:43 (Std) ---- CEGUI Imageset name: MSYH_10
05/12/2009 14:13:43 (Std) ---- Source texture file: MSYH_10.png in resource group: (Default)
05/12/2009 14:14:08 (Std) ===== Falagard 'root' element: look and feel parsing begins =====
05/12/2009 14:14:09 (Std) ===== Look and feel parsing completed =====
05/12/2009 14:14:09 (Std) No window factories specified for module 'CEGUIFalagardWRBase' - adding all available factories...
05/12/2009 14:14:09 (Error) CEGUI::InvalidRequestException in file d:\dev\src\cegui-0.7.1\cegui\src\ceguifactorymodule.cpp(116) : FactoryModule::registerAllFactories - Required function export 'uint registerAllFactories(void)' was not found in module 'CEGUIFalagardWRBase_d'.
hope these can help you figure out something.
Re: Bug?two issue after resizing application window
Posted: Sat Dec 05, 2009 14:22
by CrazyEddie
hi CE,nice to see you back.
Hi, and thanks
![Smile :)](./images/smilies/icon_smile.gif)
I think the issue is with pre-0.7.x datafiles. Both QuadraticLook and the files from Ogre(?) will have certain issues when used with the newer 0.7.x code. The main reason for this is due to the fact I finally fixed the inner/client rect support so that content is positioned, sized and clipped according to the inner rect area defined for a window. What this means is that - for example with frame window - position (0, 0) is now the top-left of the inner rect area and not the top-left of the outer rect area, to mitigate this we added distinction between client and non-client content, so things such as the title bar and close button need the property "NonClient" set to "True" in the looknfeel.
Ok. That's what
I think is causing the issue. The only thing I can't explain is why it looks normal to start with!
HTH
CE.
Re: Bug?two issue after resizing application window
Posted: Sun Dec 06, 2009 06:00
by Cloudage
hi CE.
bad news,i tried the WindowsLookSkin distributed with the 0.7.1 source,the titlebar is okay after i resize render window,but seems there are some new problems:
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/1-3.jpg)
picture 1
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/2-4.jpg)
picture 2
![Image](http://i76.photobucket.com/albums/j26/REDCLOUD_P/3-2.jpg)
picture 3
1.)at the first,everything is okay,but when i drag the right edge of the render window a little,the gui just become a little dot,as in picture 2.and then i continue draging the edge,the gui will changes between dot and normally displayed,depends on how much the size be changed.if i disable the imageset`s 'AutoScale',gui will always be a dot after resize,and never come back.
2.)when i once resized the render window,
if i use system cursor,the mouse focus position will have a vertical offset from the correct position.as in picture 3,it become a I-beam at the position inside the red circle.but if i use cegui cursor,the problem will gone,however the cursor will have a wrong scale after resizing the render window.
3.)after resizing,the close button will be scaled to a wrong scale,just like the cegui cursor image.as in picture 3,it looks more bigger than its correct resolution in picture 1.
update: no more problem#2,it`s my fault.
Re: Bug?two issue after resizing application window
Posted: Mon Dec 07, 2009 09:30
by CrazyEddie
Hmmm. Seems like it could be an issue of notifying the CEGUI system of the change in rendering window size - how are you doing that?
CE.
Re: Bug?two issue after resizing application window
Posted: Mon Dec 07, 2009 09:55
by Cloudage
i did these:
Code: Select all
unsigned int w,h,cd;
int x,y;
Enviroment::RenderWindow->getMetrics(w,h,cd,x,y);//this is a call to the ogre render window
CEGUI::Size sz = CEGUI::Size(w,h);
renderer->setDisplaySize(sz);
CEGUI::System::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::FontManager::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::ImagesetManager::getSingleton().notifyDisplaySizeChanged(sz);
CEGUI::MouseCursor::getSingleton().notifyDisplaySizeChanged(sz);
Re: Bug?two issue after resizing application window
Posted: Mon Dec 07, 2009 14:42
by CrazyEddie
Yeah, that's totally OTT
![Smile :)](./images/smilies/icon_smile.gif)
This is the correct way (your same code, just dropped the unrequired parts):
Code: Select all
unsigned int w,h,cd;
int x,y;
Enviroment::RenderWindow->getMetrics(w,h,cd,x,y);//this is a call to the ogre render window
CEGUI::Size sz = CEGUI::Size(w,h);
CEGUI::System::getSingleton().notifyDisplaySizeChanged(sz);
It used to be that you just notify the renderer, though that was always non-standard and per-implementation specific, So we changed it to a more standardised and streamlined approach whereby you notify CEGUI::System, and it will then ensure that everybody else who cares also gets informed.
HTH
CE.
Re: Bug?two issue after resizing application window
Posted: Tue Dec 08, 2009 13:24
by Cloudage
hi CE,
i followed your suggestion,but unfortunately,the problem of icon wrong scaled and gui randomly disappear still happens after the resizing...
Re: Bug?two issue after resizing application window
Posted: Tue Dec 08, 2009 14:52
by CrazyEddie
I'm not sure what else to suggest since it all works fine for me (well, last time I tested it anyway).
What values are getting logged in CEGUI.log - you should see some entries every time you resize (IIRC) - do these values correspond to what you think should be passed? Are there any values that look wrong (such as something very big or very small)?
CE.
Re: Bug?two issue after resizing application window
Posted: Wed Dec 09, 2009 09:19
by Cloudage
hi CE,
here`s my cegui.log:
Code: Select all
09/12/2009 16:03:39 (Std) Display resize: w=1010 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1011 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1012 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1016 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1018 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1023 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1024 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1025 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1026 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1027 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1030 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1032 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1033 h=730
09/12/2009 16:03:39 (Std) Display resize: w=1034 h=730
and here`s the Ogre.log
Code: Select all
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: !!! Direct3D Device Lost!
16:03:39: Releasing D3D9 default pool texture: _cegui_ogre_4
16:03:39: Released D3D9 default pool texture: _cegui_ogre_4
16:03:39: D3D9TextureManager released:
16:03:39: 1 unmanaged textures
16:03:39: D3D9HardwareBufferManager released:
16:03:39: 16 unmanaged vertex buffers
16:03:39: 0 unmanaged index buffers
16:03:39: Reset device ok w:1034 h:730
16:03:39: D3D9 : WARNING - disabling VSync in windowed mode can cause timing issues at lower frame rates, turn VSync on if you observe this problem.
16:03:39: Recreating D3D9 default pool texture: _cegui_ogre_4
16:03:39: Recreated D3D9 default pool texture: _cegui_ogre_4
16:03:39: D3D9TextureManager recreated:
16:03:39: 1 unmanaged textures
16:03:39: D3D9HardwareBufferManager recreated:
16:03:39: 16 unmanaged vertex buffers
16:03:39: 0 unmanaged index buffers
16:03:39: !!! Direct3D Device successfully restored.
i use a external window created myself as render window,fires window resized events on WM_SIZE and WM_DISPLAYCHANGE...
but it just still randomly disappears randomly comebacks even i did everything directly copy form the source of ogre and cegui...
i think i`d better just make the window unsizeable,if we have no more idea about this...
Re: Bug?two issue after resizing application window
Posted: Wed Dec 09, 2009 10:31
by CrazyEddie
Hi,
Thanks for the info. I wonder if it's perhaps a D3D render system related issue, I'm thinking this because when I say 'it works ok here', I haven't tested the D3D driver because I'm generally not on Windows. I'll try and test it out soon and see. If you're also able to test the OpenGL render system to see if you get the same or different results, that would be great
![Smile :)](./images/smilies/icon_smile.gif)
CE.
Re: Bug?two issue after resizing application window
Posted: Wed Dec 09, 2009 15:13
by Cloudage
hi CE!
i tested ogre openGL renderer,and the problem was gone,but when i use D3D renderer the problem comeback again.
Re: Bug?two issue after resizing application window
Posted: Thu Dec 10, 2009 10:02
by CrazyEddie
Thanks a lot for confirming that's it's only D3D with Ogre that's affected - there are now a few of these issues, so I can spend a couple of days (probably this weekend) focussing in on just this one area and try to get these addressed.
CE.
Re: [Bug]two issue after resizing application window
Posted: Thu Dec 10, 2009 12:31
by Cloudage
with my pleasure.
good luck!