[wx-dev] wxMac: Revision 51785 breaks wxUpdateUIEvent
Stefan Csomor
csomor at advancedconcepts.ch
Sat Feb 23 06:56:44 PST 2008
Hi Vadim
On 2/23/08 3:05 PM, "Vadim Zeitlin" <vadim at wxwidgets.org> wrote:
> On Sat, 23 Feb 2008 07:45:53 +0100 Stefan Csomor <csomor at advancedconcepts.ch>
> wrote:
>
> SC> > And if native controls can be shown even if their TLW parent is hidden,
> SC> > doesn't this mean that IsShownOnScreen() is still broken for non native
> SC> > controls under Mac?
> SC>
> SC> every wxWindow should have a peer, either a native control, or a native
> SC> panel, so the situation of not having a peer shouldn't occur
>
> Ok, IsShownOnScreen() can be simplified to not call the base class
> version. It should also presumably assert if m_peer is NULL if this is
> impossible.
I've now committed some code to be able to break into the debugger when
things are not the same between native and wx visibility. And the only
situation I've come up with until now is IN the 'visibility changed handler'
which is triggered from within mac OS, so when a container gets hidden, then
first its innermost children get the visibility changed event, and the
container turns off the lights last. So during these events wx already
reports the container as invisible (as wxwindowbase has already put m_shown
to false) but the native container is still reported visible.
I think we must try to understand all the situations where this difference
might have an importance, replace that with GetPeer->IsVisible() and then
remove the mac specific implementation IsShownOnScreen completely
Best,
Stefan
More information about the wx-dev
mailing list