From 9580fdc3b174375a6caf95d0b03ccd523015eaa0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 25 Jun 2007 13:55:06 +0000 Subject: [PATCH] wxDFB wxUSE_STL compilation fixes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46935 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/fontmgrcmn.cpp | 21 ++++++++++++--------- src/dfb/window.cpp | 4 +++- src/univ/control.cpp | 10 ++++++---- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/common/fontmgrcmn.cpp b/src/common/fontmgrcmn.cpp index ee2fe4915a..7d7ef9d35d 100644 --- a/src/common/fontmgrcmn.cpp +++ b/src/common/fontmgrcmn.cpp @@ -24,9 +24,15 @@ WX_DECLARE_LIST(wxFontInstance, wxFontInstanceList); WX_DEFINE_LIST(wxFontInstanceList) WX_DEFINE_LIST(wxFontBundleList) + WX_DECLARE_HASH_MAP(wxString, wxFontBundle*, wxStringHash, wxStringEqual, - wxFontBundleHash); + wxFontBundleHashBase); +// in STL build, hash class is typedef to a template, so it can't be forward +// declared, as we do; solve it by having a dummy class: +class wxFontBundleHash : public wxFontBundleHashBase +{ +}; // ============================================================================ // implementation @@ -65,17 +71,14 @@ wxFontInstance *wxFontFaceBase::GetFontInstance(float ptSize, bool aa) { wxASSERT_MSG( m_refCnt > 0, _T("font library not loaded!") ); - wxFontInstance *i; - wxFontInstanceList::Node *node; - - for ( node = m_instances->GetFirst(); node; node = node->GetNext() ) + for ( wxFontInstanceList::const_iterator i = m_instances->begin(); + i != m_instances->end(); ++i ) { - i = node->GetData(); - if ( i->GetPointSize() == ptSize && i->IsAntiAliased() == aa ) - return i; + if ( (*i)->GetPointSize() == ptSize && (*i)->IsAntiAliased() == aa ) + return *i; } - i = CreateFontInstance(ptSize, aa); + wxFontInstance *i = CreateFontInstance(ptSize, aa); m_instances->Append(i); return i; } diff --git a/src/dfb/window.cpp b/src/dfb/window.cpp index d07170da05..b3f8121c5e 100644 --- a/src/dfb/window.cpp +++ b/src/dfb/window.cpp @@ -757,7 +757,9 @@ void wxWindowDFB::PaintOverlays(const wxRect& rect) for ( wxDfbOverlaysList::const_iterator i = m_overlays->begin(); i != m_overlays->end(); ++i ) { - wxOverlayImpl *overlay = *i; + // FIXME: the cast is necessary for STL build where the iterator + // (incorrectly) returns void* and not wxOverlayImpl* + wxOverlayImpl *overlay = (wxOverlayImpl*) *i; wxRect orectOrig(overlay->GetRect()); wxRect orect(orectOrig); diff --git a/src/univ/control.cpp b/src/univ/control.cpp index 8a692bf840..8e2a06e9de 100644 --- a/src/univ/control.cpp +++ b/src/univ/control.cpp @@ -93,17 +93,19 @@ int wxControl::FindAccelIndex(const wxString& label, wxString *labelOnly) } int indexAccel = -1; - for ( const wxChar *pc = label; *pc != wxT('\0'); pc++ ) + for ( wxString::const_iterator pc = label.begin(); pc != label.end(); ++pc ) { if ( *pc == MNEMONIC_PREFIX ) { - pc++; // skip it - if ( *pc != MNEMONIC_PREFIX ) + ++pc; // skip it + if ( pc == label.end() ) + break; + else if ( *pc != MNEMONIC_PREFIX ) { if ( indexAccel == -1 ) { // remember it (-1 is for MNEMONIC_PREFIX itself - indexAccel = pc - label.c_str() - 1; + indexAccel = pc - label.begin() - 1; } else { -- 2.45.2