On 27 Sep 2013, at 10:50 AM, Roland Winklmeier wrote:
> In the mean time I found some other weird stuff. I did some tests with QML 
> windows:
> 
> ApplicationWindow {
>     id: mainWindow
>     title: "My MainWindow"
>     width: 640
>     height: 480
> 
>     Button {
>         text: "Child"
>         onClicked: childWindow.visible = !childWindow.visible
>     }
>     
>     Window {
>         id: childWindow
>         visible: true
>     }
> }
> 
> childWindow should have the parent mainWindow from the beginning. But it 
> isnt. I have to manually set the visibility to false and open it via the 
> button or close and open it with the button. Doing this will change it to act 
> like a proper child window. I guess this is a bug in Qt.

These kinds of problems are because of initialization order: the inner window 
is created (and made visible, because it's declared that way) before the outer 
one is, so it cannot become transient for the outer window.  Hopefully we can 
invent a real fix for that, but in the mean time you can force the order in 
which they become visible by taking out any visible: true declarations and 
adding this to the outer window:

Component.onCompleted: { mainWindow.visible = true; childWindow.visible = true }

Or as you say, the user can initiate showing the transient window.  A transient 
popup dialog is usually a response to something the user did, or something that 
happened asynchronously; but why would you write an app that interrupts you 
immediately with a transient popup before you do anything?  I was hoping such 
situations would be rare, except in writing test code to make sure that 
multiple windows work OK.  ;-)

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to