wxArchiveFSHandler switches on simulated seeking for compatibility with

previous versions. Still overridden by wxFS_SEEKABLE.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Wetherell
2006-11-19 02:11:40 +00:00
parent 82fb2b744f
commit 5c80cef4bf
3 changed files with 18 additions and 6 deletions

View File

@@ -440,9 +440,9 @@ private:
friend bool wxZipOutputStream::CopyArchiveMetaData( friend bool wxZipOutputStream::CopyArchiveMetaData(
wxZipInputStream& inputStream); wxZipInputStream& inputStream);
#if WXWIN_COMPATIBILITY_2_6 && wxUSE_FFILE #if WXWIN_COMPATIBILITY_2_6
bool m_allowSeeking; bool m_allowSeeking;
friend class wxZipFSInputStream; friend class wxArchiveFSHandler;
#endif #endif
DECLARE_NO_COPY_CLASS(wxZipInputStream) DECLARE_NO_COPY_CLASS(wxZipInputStream)

View File

@@ -22,7 +22,12 @@
#include "wx/log.h" #include "wx/log.h"
#endif #endif
#include "wx/archive.h" #if WXWIN_COMPATIBILITY_2_6
#include "wx/zipstrm.h"
#else
#include "wx/archive.h"
#endif
#include "wx/private/fileback.h" #include "wx/private/fileback.h"
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -393,6 +398,12 @@ wxFSFile* wxArchiveFSHandler::OpenFile(
s->OpenEntry(*entry); s->OpenEntry(*entry);
if (s && s->IsOk()) if (s && s->IsOk())
{
#if WXWIN_COMPATIBILITY_2_6
if (factory->IsKindOf(CLASSINFO(wxZipClassFactory)))
((wxZipInputStream*)s)->m_allowSeeking = true;
#endif // WXWIN_COMPATIBILITY_2_6
return new wxFSFile(s, return new wxFSFile(s,
key + right, key + right,
GetMimeTypeFromExt(location), GetMimeTypeFromExt(location),
@@ -401,6 +412,7 @@ wxFSFile* wxArchiveFSHandler::OpenFile(
, entry->GetDateTime() , entry->GetDateTime()
#endif // wxUSE_DATETIME #endif // wxUSE_DATETIME
); );
}
delete s; delete s;
return NULL; return NULL;

View File

@@ -1374,7 +1374,7 @@ void wxZipInputStream::Init()
m_signature = 0; m_signature = 0;
m_TotalEntries = 0; m_TotalEntries = 0;
m_lasterror = m_parent_i_stream->GetLastError(); m_lasterror = m_parent_i_stream->GetLastError();
#if WXWIN_COMPATIBILITY_2_6 && wxUSE_FFILE #if WXWIN_COMPATIBILITY_2_6
m_allowSeeking = false; m_allowSeeking = false;
#endif #endif
} }
@@ -1883,7 +1883,7 @@ size_t wxZipInputStream::OnSysRead(void *buffer, size_t size)
return count; return count;
} }
#if WXWIN_COMPATIBILITY_2_6 && wxUSE_FFILE #if WXWIN_COMPATIBILITY_2_6
// Borrowed from VS's zip stream (c) 1999 Vaclav Slavik // Borrowed from VS's zip stream (c) 1999 Vaclav Slavik
// //
@@ -1948,7 +1948,7 @@ wxFileOffset wxZipInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode)
return pos; return pos;
} }
#endif // WXWIN_COMPATIBILITY_2_6 && wxUSE_FFILE #endif // WXWIN_COMPATIBILITY_2_6
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////