git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4408
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
file_menu->Append(Menu_Quit, "E&xit");
wxMenu *log_menu = new wxMenu;
file_menu->Append(Menu_Quit, "E&xit");
wxMenu *log_menu = new wxMenu;
- log_menu->Append(Menu_Clear, "Clear\tDel");
+ log_menu->Append(Menu_Clear, "Clear\tCtrl-L");
wxMenu *help_menu = new wxMenu;
help_menu->Append(Menu_Help, "&Help...");
wxMenu *help_menu = new wxMenu;
help_menu->Append(Menu_Help, "&Help...");
void DnDFrame::OnLogClear(wxCommandEvent& /* event */ )
{
m_ctrlLog->Clear();
void DnDFrame::OnLogClear(wxCommandEvent& /* event */ )
{
m_ctrlLog->Clear();
+ m_ctrlText->Clear();
+ m_ctrlFile->Clear();
}
void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
}
void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
wxTextDataObject textData(m_strText);
/*
wxFileDataObject textData;
wxTextDataObject textData(m_strText);
/*
wxFileDataObject textData;
- textData.AddFile( "/file1.txt" );
- textData.AddFile( "/file2.txt" );
+ textData.AddFile( "/file1.txt" );
+ textData.AddFile( "/file2.txt" );
*/
wxDropSource source(textData, this
#ifdef __WXMSW__
*/
wxDropSource source(textData, this
#ifdef __WXMSW__
- ,wxCURSOR_PENCIL, // for copy
+ ,wxCURSOR_PENCIL, // for copy
wxCURSOR_SPRAYCAN, // for move
wxCURSOR_SPRAYCAN, // for move
- wxCURSOR_QUESTION_ARROW // for nothing
+ wxCURSOR_QUESTION_ARROW // for nothing
void wxDataFormat::PrepareFormats()
{
void wxDataFormat::PrepareFormats()
{
+ // VZ: GNOME included in RedHat 6.1 uses the MIME types below and not the
+ // atoms STRING and file:ALL as the old code was
- g_textAtom = gdk_atom_intern( "STRING", FALSE );
+ g_textAtom = gdk_atom_intern( "text/plain", FALSE );
if (!g_pngAtom)
g_pngAtom = gdk_atom_intern( "image/png", FALSE );
if (!g_fileAtom)
if (!g_pngAtom)
g_pngAtom = gdk_atom_intern( "image/png", FALSE );
if (!g_fileAtom)
- g_fileAtom = gdk_atom_intern( "file:ALL", FALSE );
+ g_fileAtom = gdk_atom_intern( "text/uri-list", FALSE );
}
//-------------------------------------------------------------------------
}
//-------------------------------------------------------------------------
bool wxFileDataObject::SetData(size_t size, const void *buf)
{
bool wxFileDataObject::SetData(size_t size, const void *buf)
{
+ // VZ: old format
+#if 0
// filenames are stores as a string with #0 as deliminators
// filenames are stores as a string with #0 as deliminators
const char *filenames = (const char*) buf;
size_t pos = 0;
for(;;)
{
if (filenames[0] == 0)
const char *filenames = (const char*) buf;
size_t pos = 0;
for(;;)
{
if (filenames[0] == 0)
- break;
- if (pos >= size)
- break;
+ break;
+ if (pos >= size)
+ break;
wxString file( filenames ); // this returns the first file
AddFile( file );
wxString file( filenames ); // this returns the first file
AddFile( file );
- pos += file.Len()+1;
- filenames += file.Len()+1;
+ pos += file.Len()+1;
+ filenames += file.Len()+1;
+ }
+#else // 1
+ m_filenames.Empty();
+
+ // the text/uri-list format is a sequence of URIs (filenames prefixed by
+ // "file:" as far as I see) delimited by "\r\n" of total length size
+ // (I wonder what happens if the file has '\n' in its filename??)
+ wxString filename;
+ for ( const char *p = (const char *)buf; *p; p++ )
+ {
+ if ( *p == '\r' && *(p+1) == '\n' )
+ {
+ static const int lenPrefix = 5; // strlen("file:")
+ if ( filename.Left(lenPrefix).MakeLower() == _T("file:") )
+ {
+ filename.erase(0, lenPrefix);
+ }
+
+ AddFile(filename);
+ filename.Empty();
+
+ // skip '\r'
+ p++;
+ }
+ else
+ {
+ filename += *p;
+ }
// disable the debug message from GetMatchingPair() - there are too many
// of them otherwise
// disable the debug message from GetMatchingPair() - there are too many
// of them otherwise
wxLogNull noLog;
#endif // Debug
wxLogNull noLog;
#endif // Debug
void wxDataFormat::PrepareFormats()
{
void wxDataFormat::PrepareFormats()
{
+ // VZ: GNOME included in RedHat 6.1 uses the MIME types below and not the
+ // atoms STRING and file:ALL as the old code was
- g_textAtom = gdk_atom_intern( "STRING", FALSE );
+ g_textAtom = gdk_atom_intern( "text/plain", FALSE );
if (!g_pngAtom)
g_pngAtom = gdk_atom_intern( "image/png", FALSE );
if (!g_fileAtom)
if (!g_pngAtom)
g_pngAtom = gdk_atom_intern( "image/png", FALSE );
if (!g_fileAtom)
- g_fileAtom = gdk_atom_intern( "file:ALL", FALSE );
+ g_fileAtom = gdk_atom_intern( "text/uri-list", FALSE );
}
//-------------------------------------------------------------------------
}
//-------------------------------------------------------------------------
bool wxFileDataObject::SetData(size_t size, const void *buf)
{
bool wxFileDataObject::SetData(size_t size, const void *buf)
{
+ // VZ: old format
+#if 0
// filenames are stores as a string with #0 as deliminators
// filenames are stores as a string with #0 as deliminators
const char *filenames = (const char*) buf;
size_t pos = 0;
for(;;)
{
if (filenames[0] == 0)
const char *filenames = (const char*) buf;
size_t pos = 0;
for(;;)
{
if (filenames[0] == 0)
- break;
- if (pos >= size)
- break;
+ break;
+ if (pos >= size)
+ break;
wxString file( filenames ); // this returns the first file
AddFile( file );
wxString file( filenames ); // this returns the first file
AddFile( file );
- pos += file.Len()+1;
- filenames += file.Len()+1;
+ pos += file.Len()+1;
+ filenames += file.Len()+1;
+ }
+#else // 1
+ m_filenames.Empty();
+
+ // the text/uri-list format is a sequence of URIs (filenames prefixed by
+ // "file:" as far as I see) delimited by "\r\n" of total length size
+ // (I wonder what happens if the file has '\n' in its filename??)
+ wxString filename;
+ for ( const char *p = (const char *)buf; *p; p++ )
+ {
+ if ( *p == '\r' && *(p+1) == '\n' )
+ {
+ static const int lenPrefix = 5; // strlen("file:")
+ if ( filename.Left(lenPrefix).MakeLower() == _T("file:") )
+ {
+ filename.erase(0, lenPrefix);
+ }
+
+ AddFile(filename);
+ filename.Empty();
+
+ // skip '\r'
+ p++;
+ }
+ else
+ {
+ filename += *p;
+ }
// disable the debug message from GetMatchingPair() - there are too many
// of them otherwise
// disable the debug message from GetMatchingPair() - there are too many
// of them otherwise
wxLogNull noLog;
#endif // Debug
wxLogNull noLog;
#endif // Debug