I'm experiencing a problem with frame windows that appears to be inner rect related. When the window is first show, it does not appear to account for the titlebar when calculating the inner rect. If the window is moved and then deactivated the area is closer to correct. Resizing it results in the expected area. Hopefully the following pictures make clear the problem.
First Shown:
Moved:
Resized:
The behavior occurs with both the AquaLook and TaharezLook schemes, so it doesn't seem to be related to the skin being used. I've tried using setArea() and invalidate() on the windows after loading the layout, but that had no effect. Is anyone experiencing a similar problem?
CEGUI Log:
11:11:09.234(0688)@INFO:CEGUI@ ---- Version 0.7.0 (Build: Sep 22 2009 Debug Microsoft Windows MSVC++ 8.0 32 bit) ----
11:11:09.234(0688)@INFO:CEGUI@ ---- Renderer module is: CEGUI::OgreRenderer - Official OGRE based 2nd generation renderer module. ----
11:11:09.234(0688)@INFO:CEGUI@ ---- XML Parser module is: CEGUI::TinyXMLParser - Official tinyXML based parser module for CEGUI ----
11:11:09.250(0688)@INFO:CEGUI@ ---- Image Codec module is: OgreImageCodec - Integrated ImageCodec using the Ogre engine. ----
11:11:09.250(0688)@INFO:CEGUI@ ---- Scripting module is: None ----
[Solved] Framewindow inner rect problem
Moderators: CEGUI MVP, CEGUI Team
-
- Not too shy to talk
- Posts: 22
- Joined: Thu Apr 17, 2008 06:13
- Location: Arizona, United States of America
[Solved] Framewindow inner rect problem
Last edited by fedyakin on Fri Sep 25, 2009 17:29, edited 1 time in total.
- CrazyEddie
- CEGUI Project Lead
- Posts: 6760
- Joined: Wed Jan 12, 2005 12:06
- Location: England
- Contact:
Re: Framewindow inner rect problem
Hi,
I just ran a quick test, but did not reproduce the issue. Can you tell us if you're creating the layout in code or via XML, if via XML can you post the XML (or PM if you don't want to post publicly). Also is the frame window being rendered to a texture target or a normal viewport type target.
Cheers,
CE.
I just ran a quick test, but did not reproduce the issue. Can you tell us if you're creating the layout in code or via XML, if via XML can you post the XML (or PM if you don't want to post publicly). Also is the frame window being rendered to a texture target or a normal viewport type target.
Cheers,
CE.
Useful Links: Forum Guidelines | Documentation | Tutorials | HOWTO | Videos | Donate to CEGUI | CEGUI Twitter
-
- Not too shy to talk
- Posts: 22
- Joined: Thu Apr 17, 2008 06:13
- Location: Arizona, United States of America
Re: Framewindow inner rect problem
The interface should be rendering to a viewport target (its using the default constructor of CEGUI::OgreRenderer). I think the frame window is rendering to a texture though because AutoRenderingSurface is true for FrameWindow in the looknfeel file. Changing that property had no effect.
The window is from the following layout. We make use of the PropertyCallback to loadWindowLayout, so you might have to comment out a property or two to use the layout. (As an aside, I was impressed by the foresight in that feature )
The window is from the following layout. We make use of the PropertyCallback to loadWindowLayout, so you might have to comment out a property or two to use the layout. (As an aside, I was impressed by the foresight in that feature )
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<GUILayout >
<Window Type="TaharezLook/FrameWindow" Name="DevelopmentWin" >
<Property Name="SaveVis" Value="True" />
<Property Name="Visible" Value="False" />
<Property Name="AlwaysOnTop" Value="True" />
<Property Name="CloseButtonEnabled" Value="False" />
<Property Name="Text" Value="Interface Development" />
<Property Name="UnifiedAreaRect" Value="{{1,-349},{0,63},{1,0},{0,313}}" />
<Window Type="TaharezLook/MultiLineEditbox" Name="DevelopmentWin_Result" >
<Property Name="ReadOnly" Value="True" />
<Property Name="Text" Value="
"/> <!-- This newline is a workaround for a bug in multiline editboxes. Don't remove it until that's fixed -->
<Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{.5,-3}}" />
</Window>
<Window Type="TaharezLook/MultiLineEditbox" Name="DevelopmentWin_Command" >
<Property Name="MaxTextLength" Value="300" />
<Property Name="UnifiedAreaRect" Value="{{0,0},{.5,3},{1,0},{1,-40}}" />
</Window>
<Window Type="TaharezLook/Button" Name="DevelopmentWin_Reload" >
<Property Name="Tooltip" Value="Reload the entire UI, including scripts and layout files" />
<Property Name="Text" Value="Reload" />
<Property Name="UnifiedAreaRect" Value="{{0,0},{1,-40},{0,110},{1,0}}" />
</Window>
<Window Type="TaharezLook/Button" Name="DevelopmentWin_Game" >
<Property Name="Tooltip" Value="Load the UI in Game mode" />
<Property Name="Text" Value="G" />
<Property Name="UnifiedAreaRect" Value="{{0.5,-50},{1,-40},{0.5,0},{1,0}}" />
</Window>
<Window Type="TaharezLook/Button" Name="DevelopmentWin_Startup" >
<Property Name="Text" Value="S" />
<Property Name="Tooltip" Value="Load the UI in Startup mode" />
<Property Name="UnifiedAreaRect" Value="{{0.5,0},{1,-40},{0.5,50},{1,0}}" />
</Window>
<Window Type="TaharezLook/Button" Name="DevelopmentWin_Execute" >
<Property Name="Tooltip" Value="Execute the entered script" />
<Property Name="Text" Value="Execute" />
<Property Name="UnifiedAreaRect" Value="{{1,-110},{1,-40},{1,0},{1,0}}" />
</Window>
</Window>
</GUILayout>
-
- Not too shy to talk
- Posts: 22
- Joined: Thu Apr 17, 2008 06:13
- Location: Arizona, United States of America
Re: Framewindow inner rect problem
I believe I have figured out how to reproduce the problem. It occurs if the framewindow is never sized while visible. In the layout file above, the framewindow's 'Visible' property is set to false, and the window is shown in response to a key press.
In case it helps, the following snippet after loading a layout causes the window to be drawn as expected...
In case it helps, the following snippet after loading a layout causes the window to be drawn as expected...
Code: Select all
const bool wasVisible = window->isVisible();
window->show();
const CEGUI::URect oldArea = window->getArea();
window->setArea(CEGUI::URect(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0), CEGUI::UDim(1, 0), CEGUI::UDim(1, 0)));
window->setArea(oldArea);
window->setVisible(wasVisible);
- CrazyEddie
- CEGUI Project Lead
- Posts: 6760
- Joined: Wed Jan 12, 2005 12:06
- Location: England
- Contact:
Re: Framewindow inner rect problem
Hi, thanks for posting the layout and other info; I'll test it out and get back to you about it, though basically it seems that somewhere we're not invalidating the cached area rects when we should be.
Thanks, this was put in after a feature request from a user some years back, since then it's proven useful in many scenarios
CE.
We make use of the PropertyCallback to loadWindowLayout ... I was impressed by the foresight in that feature
Thanks, this was put in after a feature request from a user some years back, since then it's proven useful in many scenarios
CE.
Useful Links: Forum Guidelines | Documentation | Tutorials | HOWTO | Videos | Donate to CEGUI | CEGUI Twitter
- CrazyEddie
- CEGUI Project Lead
- Posts: 6760
- Joined: Wed Jan 12, 2005 12:06
- Location: England
- Contact:
Re: Framewindow inner rect problem
Ok. This issue is fixed in svn branc v0-7 r2265.
Interesting point here: while for child content the issue only manifests itself in 0.7.0 because of the inner rect / client area fix in that release, the actual bug (checking titlebar visibility instead of the correct option setting) has been present for many years - so nice find
CE.
Interesting point here: while for child content the issue only manifests itself in 0.7.0 because of the inner rect / client area fix in that release, the actual bug (checking titlebar visibility instead of the correct option setting) has been present for many years - so nice find
CE.
Useful Links: Forum Guidelines | Documentation | Tutorials | HOWTO | Videos | Donate to CEGUI | CEGUI Twitter
-
- Not too shy to talk
- Posts: 22
- Joined: Thu Apr 17, 2008 06:13
- Location: Arizona, United States of America
Re: Framewindow inner rect problem
That was fast, thanks
Who is online
Users browsing this forum: No registered users and 16 guests