-bool wxPopupWindow::Show(
- bool bShow
-)
-{
- SWP vSwp;
- //
- // 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(bShow))
- return FALSE;
-
- if (bShow)
- {
- m_svShownPopups.Append(this);
- }
- else // remove from the shown list
- {
- m_svShownPopups.DeleteObject(this);
- }
- ::WinQueryWindowPos(GetHwnd(), &vSwp);
-
- if (bShow)
- {
- ::WinSetWindowPos( GetHwnd()
- ,HWND_TOP
- ,vSwp.x
- ,vSwp.y
- ,vSwp.cx
- ,vSwp.cy
- ,SWP_DEACTIVATE | SWP_SHOW | SWP_ZORDER
- );
- }
- else
- {
- ::WinSetWindowPos( GetHwnd()
- ,HWND_BOTTOM
- ,vSwp.x
- ,vSwp.y
- ,vSwp.cx
- ,vSwp.cy
- ,SWP_HIDE | SWP_ZORDER
- );
- }
- return TRUE;
-} // end of wxPopupWindow::Show
-
-/* static */
-wxPopupWindow* wxPopupWindow::FindPopupFor(
- wxWindow* pWinParent
-)
-{
- //
- // Find a popup with the given parent in the linked list of all shown
- // popups
- //
- for ( wxWindowList::Node *node = m_svShownPopups.GetFirst();
- node;
- node = node->GetNext() )
- {
- wxWindow* pWin = node->GetData();
-
- if (pWin->GetParent() == pWinParent )
- return (wxPopupWindow *)pWin;
- }
- return NULL;
-} // end of wxPopupWindow::FindPopupFor