mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-08 11:26:59 +02:00
* drag & drop works with gnome file manager now
This commit is contained in:
parent
3ee236eb22
commit
6a1d15a40a
@ -2,7 +2,7 @@
|
|||||||
* x11_dragdrop.cpp: X11 implementation of the drag & drop
|
* x11_dragdrop.cpp: X11 implementation of the drag & drop
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
* Copyright (C) 2003 VideoLAN
|
* Copyright (C) 2003 VideoLAN
|
||||||
* $Id: x11_dragdrop.cpp,v 1.3 2003/06/09 00:07:09 asmax Exp $
|
* $Id: x11_dragdrop.cpp,v 1.4 2003/06/09 00:32:58 asmax Exp $
|
||||||
*
|
*
|
||||||
* Authors: Cyril Deguet <asmax@videolan.org>
|
* Authors: Cyril Deguet <asmax@videolan.org>
|
||||||
*
|
*
|
||||||
@ -171,10 +171,22 @@ void X11DropObject::DndDrop( ldata_t data )
|
|||||||
XGetWindowProperty( display, src, propAtom, 0, 1024, False,
|
XGetWindowProperty( display, src, propAtom, 0, 1024, False,
|
||||||
AnyPropertyType, &type, &format, &nitems, &nbytes,
|
AnyPropertyType, &type, &format, &nitems, &nbytes,
|
||||||
(unsigned char**)&buffer );
|
(unsigned char**)&buffer );
|
||||||
string selection = buffer;
|
string selection = "";
|
||||||
|
if( buffer != NULL )
|
||||||
|
{
|
||||||
|
selection = buffer;
|
||||||
|
}
|
||||||
XFree( buffer );
|
XFree( buffer );
|
||||||
XUNLOCK;
|
XUNLOCK;
|
||||||
|
|
||||||
|
if( selection != "" )
|
||||||
|
{
|
||||||
|
// TODO: multiple files handling
|
||||||
|
string::size_type end = selection.find( "\n", 0 );
|
||||||
|
selection = selection.substr( 0, end -1 );
|
||||||
|
end = selection.find( "\r", 0 );
|
||||||
|
selection = selection.substr( 0, end -1 );
|
||||||
|
|
||||||
// Find the protocol, if any
|
// Find the protocol, if any
|
||||||
string::size_type pos = selection.find( ":", 0 );
|
string::size_type pos = selection.find( ":", 0 );
|
||||||
if( selection.find("///", pos + 1 ) == pos + 1 )
|
if( selection.find("///", pos + 1 ) == pos + 1 )
|
||||||
@ -186,6 +198,7 @@ void X11DropObject::DndDrop( ldata_t data )
|
|||||||
strncpy( name, selection.c_str(), selection.size()+1 );
|
strncpy( name, selection.c_str(), selection.size()+1 );
|
||||||
msg_Dbg( p_intf, "drop: %s\n", name );
|
msg_Dbg( p_intf, "drop: %s\n", name );
|
||||||
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 0 );
|
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
// Tell the source we accepted the drop
|
// Tell the source we accepted the drop
|
||||||
XEvent event;
|
XEvent event;
|
||||||
@ -201,4 +214,5 @@ void X11DropObject::DndDrop( ldata_t data )
|
|||||||
XSendEvent( display, src, False, 0, &event );
|
XSendEvent( display, src, False, 0, &event );
|
||||||
XUNLOCK;
|
XUNLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user