///////////////////////////////////////////////////////////////////////////////
-// Name: msw/popupwin.cpp
+// Name: src/msw/popupwin.cpp
// Purpose: implements wxPopupWindow for MSW
// Author: Vadim Zeitlin
// Modified by:
// Created: 08.05.02
-// RCS-ID: $Id$
// Copyright: (c) 2002 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// License: wxWindows licence
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "popup.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#if wxUSE_POPUPWIN
+
#ifndef WX_PRECOMP
-#include "wx/defs.h"
#endif //WX_PRECOMP
-#if wxUSE_POPUPWIN
-
#include "wx/popupwin.h"
#include "wx/msw/private.h" // for GetDesktopWindow()
-IMPLEMENT_DYNAMIC_CLASS(wxPopupWindow, wxWindow)
-
// ============================================================================
// implementation
// ============================================================================
Hide();
return wxPopupWindowBase::Create(parent) &&
- wxWindow::Create(parent, -1,
+ wxWindow::Create(parent, wxID_ANY,
wxDefaultPosition, wxDefaultSize,
flags | wxPOPUP_WINDOW);
}
#endif
}
+void wxPopupWindow::SetFocus()
+{
+ // Focusing on a popup window does not work on MSW unless WS_POPUP style is
+ // set (which is never the case currently, see the note in MSWGetParent()).
+ // We do not even want to try to set the focus, as it returns an error from
+ // SetFocus() on recent Windows versions (since Vista) and the resulting
+ // debug message is annoying.
+}
+
bool wxPopupWindow::Show(bool show)
{
if ( !wxWindowMSW::Show(show) )
- return FALSE;
+ return false;
if ( show )
{
// raise to top of z order
if (!::SetWindowPos(GetHwnd(), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE))
{
- wxLogLastError(_T("SetWindowPos"));
+ wxLogLastError(wxT("SetWindowPos"));
}
+
+ // and set it as the foreground window so the mouse can be captured
+ ::SetForegroundWindow(GetHwnd());
}
- return TRUE;
+ return true;
}
#endif // #if wxUSE_POPUPWIN
-