c80e529021
The global wxCurrentPopupWindow used by wxMSW wasn't reset in this case and resulted in a crash during the next mouse or focus event. Do it in wxPopupWindow dtor now, and not just when the popup is hidden.
56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/popupwin.h
|
|
// Purpose: wxPopupWindow class for wxMSW
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 06.01.01
|
|
// Copyright: (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_MSW_POPUPWIN_H_
|
|
#define _WX_MSW_POPUPWIN_H_
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxPopupWindow
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxPopupWindow : public wxPopupWindowBase
|
|
{
|
|
public:
|
|
wxPopupWindow() { m_owner = NULL; }
|
|
|
|
wxPopupWindow(wxWindow *parent, int flags = wxBORDER_NONE)
|
|
{ (void)Create(parent, flags); }
|
|
|
|
bool Create(wxWindow *parent, int flags = wxBORDER_NONE);
|
|
|
|
virtual ~wxPopupWindow();
|
|
|
|
virtual void SetFocus() wxOVERRIDE;
|
|
virtual bool Show(bool show = true) wxOVERRIDE;
|
|
|
|
// return the style to be used for the popup windows
|
|
virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const wxOVERRIDE;
|
|
|
|
// get the HWND to be used as parent of this window with CreateWindow()
|
|
virtual WXHWND MSWGetParent() const wxOVERRIDE;
|
|
|
|
|
|
// Implementation only from now on.
|
|
|
|
// Return the top level window parent of this popup or null.
|
|
wxWindow* MSWGetOwner() const { return m_owner; }
|
|
|
|
// This is a way to notify non-wxPU_CONTAINS_CONTROLS windows about the
|
|
// events that should result in their dismissal.
|
|
virtual void MSWDismissUnfocusedPopup() { }
|
|
|
|
private:
|
|
wxWindow* m_owner;
|
|
|
|
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxPopupWindow);
|
|
};
|
|
|
|
#endif // _WX_MSW_POPUPWIN_H_
|