When wxUSE_STL == 1 and STL provides quasi-standard hash_map/hash_set,
wxHashMap/wxHashSet are just typedefs for them. This makes impossible to forward declare these classes. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -29,7 +29,6 @@
|
||||
#include "wx/intl.h"
|
||||
#include "wx/evtloop.h"
|
||||
#include "wx/hash.h"
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
#if wxUSE_THREADS
|
||||
#include "wx/thread.h"
|
||||
@@ -60,8 +59,6 @@ struct wxPerDisplayData
|
||||
Widget m_topLevelWidget;
|
||||
};
|
||||
|
||||
WX_DECLARE_VOIDPTR_HASH_MAP( wxPerDisplayData, wxPerDisplayDataMap );
|
||||
|
||||
static void wxTLWidgetDestroyCallback(Widget w, XtPointer clientData,
|
||||
XtPointer ptr);
|
||||
static WXWidget wxCreateTopLevelWidget( WXDisplay* display );
|
||||
@@ -138,8 +135,9 @@ wxApp::~wxApp()
|
||||
end = m_perDisplayData->end();
|
||||
it != end; ++it )
|
||||
{
|
||||
delete it->second.m_visualInfo;
|
||||
XtDestroyWidget( it->second.m_topLevelWidget );
|
||||
delete it->second->m_visualInfo;
|
||||
XtDestroyWidget( it->second->m_topLevelWidget );
|
||||
delete it->second;
|
||||
}
|
||||
|
||||
delete m_perDisplayData;
|
||||
@@ -244,17 +242,30 @@ WXColormap wxApp::GetMainColormap(WXDisplay* display)
|
||||
return (WXColormap) c;
|
||||
}
|
||||
|
||||
static inline wxPerDisplayData& GetOrCreatePerDisplayData
|
||||
( wxPerDisplayDataMap& m, WXDisplay* display )
|
||||
{
|
||||
wxPerDisplayDataMap::iterator it = m.find( display );
|
||||
if( it != m.end() && it->second != NULL )
|
||||
return *(it->second);
|
||||
|
||||
wxPerDisplayData* nData = new wxPerDisplayData();
|
||||
m[display] = nData;
|
||||
|
||||
return *nData;
|
||||
}
|
||||
|
||||
wxXVisualInfo* wxApp::GetVisualInfo( WXDisplay* display )
|
||||
{
|
||||
wxPerDisplayDataMap::iterator it = m_perDisplayData->find( display );
|
||||
|
||||
if( it != m_perDisplayData->end() && it->second.m_visualInfo )
|
||||
return it->second.m_visualInfo;
|
||||
wxPerDisplayData& data = GetOrCreatePerDisplayData( *m_perDisplayData,
|
||||
display );
|
||||
if( data.m_visualInfo )
|
||||
return data.m_visualInfo;
|
||||
|
||||
wxXVisualInfo* vi = new wxXVisualInfo;
|
||||
wxFillXVisualInfo( vi, (Display*)display );
|
||||
|
||||
(*m_perDisplayData)[display].m_visualInfo = vi;
|
||||
data.m_visualInfo = vi;
|
||||
|
||||
return vi;
|
||||
}
|
||||
@@ -287,10 +298,10 @@ WXWidget wxCreateTopLevelWidget( WXDisplay* display )
|
||||
WXWidget wxApp::GetTopLevelWidget()
|
||||
{
|
||||
WXDisplay* display = wxGetDisplay();
|
||||
wxPerDisplayDataMap::iterator it = m_perDisplayData->find( display );
|
||||
|
||||
if( it != m_perDisplayData->end() && it->second.m_topLevelWidget )
|
||||
return (WXWidget)it->second.m_topLevelWidget;
|
||||
wxPerDisplayData& data = GetOrCreatePerDisplayData( *m_perDisplayData,
|
||||
display );
|
||||
if( data.m_topLevelWidget )
|
||||
return (WXWidget)data.m_topLevelWidget;
|
||||
|
||||
WXWidget tlw = wxCreateTopLevelWidget( display );
|
||||
SetTopLevelWidget( display, tlw );
|
||||
@@ -300,7 +311,7 @@ WXWidget wxApp::GetTopLevelWidget()
|
||||
|
||||
void wxApp::SetTopLevelWidget(WXDisplay* display, WXWidget widget)
|
||||
{
|
||||
(*m_perDisplayData)[display].m_topLevelWidget = (Widget)widget;
|
||||
(*m_perDisplayData)[display]->m_topLevelWidget = (Widget)widget;
|
||||
}
|
||||
|
||||
// Yield to other processes
|
||||
|
Reference in New Issue
Block a user