can windows be reparented? (Buig 825)

Ann and Jason Edmeades us at the-edmeades.demon.co.uk
Sat Aug 17 16:22:09 CDT 2002


Just an FYI - Applied Bills 2nd patch (which included the fix for the first
part), and retested my VB app.

The behaviour I am seeing is better, but not 100%:

1. A modal window now is fully visible
2. A modal window, when visible accepts key/mouse input
3. Once the modal window is visible, a click on the owning parent brings the
parent in front of the modal one
    but it doesnt have focus
4. Once the owning parent is in front of the modal window, I cant retrieve
the modal window by clicking on it
     but it still has focus and text goes into modal window
5. The only way to get a full view of the modal window is to use the task
bar and click on it

I think if the parent gets a message to come to the front, it should bring
the child in front of it?

However this fix is better than the hack I was using which left both fully
useable!

Thanks
Jason

-----Original Message-----
From: Dmitry Timoshkov [mailto:dmitry at baikal.ru]
Sent: 14 August 2002 02:33
To: us at the-edmeades.demon.co.uk
Cc: wine-devel at winehq.com
Subject: Re: Re:can windows be reparented?


<us at the-edmeades.demon.co.uk> wrote:

> To be honest I never investigated further once I commented out the
SetParent call,
> as I was continuing to fix oleaut32 and left the gui side to someone else!
>
> I know it was being called in the failing case, and removing it allowed
the
> windows to pop up, BUT they were still wrong as you could access the
'parent'
> whereas you should not be able to

Could you please test patch posted by Bill Medland to wine-patches today?
It's
not entirely correct though. My tests show that
SetWindowLong(GWL_HWNDPARENT)
call changes simultaneously both parent and owner for top level windows and
returns old value (not sure old owner or parent it is).

But top level windows created by Visual Vasic are special: they have no
parent,
but only owner according to Spy++. In my tests I can't reproduce it yet.

A bit of investigation of Wine source revealed that some places use
GetAncestor(hwnd, GA_PARENT), while others use GetParent(hwnd). Since
their behaviour is different in respect of top level and child windows,
some major clean up in that area in Wine is needed.

--
Dmitry.






More information about the wine-devel mailing list