- // skip wxWindow::Show() which calls wxBringWindowToTop(): this results in
- // activating the popup window and stealing the atcivation from our parent
- // which means that the parent frame becomes deactivated when opening a
- // combobox, for example -- definitely not what we want
- if ( !wxWindowBase::Show(show) )
- return FALSE;
-
- if ( show )
- {
- ms_shownPopups.Append(this);
- }
- else // remove from the shown list
- {
- ms_shownPopups.DeleteObject(this);
- }
-
- ::ShowWindow(GetHwnd(), show ? SW_SHOWNOACTIVATE : SW_HIDE);
-
- return TRUE;
+ // we must be a child of the desktop to be able to extend beyond the parent
+ // window client area (like the comboboxes drop downs do)
+ //
+ // NB: alternative implementation would be to use WS_POPUP instead of
+ // WS_CHILD but then showing a popup would deactivate the parent which
+ // is ugly and working around this, although possible, is even more
+ // ugly
+ // GetDesktopWindow() is not always supported on WinCE, and if
+ // it is, it often returns NULL.
+#ifdef __WXWINCE__
+ return 0;
+#else
+ return (WXHWND)::GetDesktopWindow();
+#endif