Commit bbf9da7d authored by Olivier Teulière's avatar Olivier Teulière

* modules/gui/skins/*: Added a "playondrop" attribute to the "Window"

     tag, which enables to choose whether drop files should be played
     directly or only enqueued (default is "true", to be backwards
     compatible).
     Implemented on win32 and x11, only tested on win32.
 * doc/skins/skins-howto.txt: Updated the doc accordingly
parent 2b22ca83
......@@ -150,6 +150,9 @@ OK, let's go for an enumeration of the different tags and theor attributes :
- dragdrop: sets if drag and drop of media files is allowed in this
window.
Default is "true".
- playondrop: sets if a drop file is played directly (true) or only
enqueud (false). This has no effect if dragdrop is set to "false".
Default is "true".
- ControlGroup: Adds an offset to the elements it contains. A ControlGroup is
only supposed to ease the job of the skin designer, who can adjust the
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,7 @@
* skin.act: FleXML actions file
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin.act,v 1.8 2003/07/23 09:14:24 asmax Exp $
* $Id: skin.act,v 1.9 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -57,7 +57,7 @@
<start tag="Window">
<![CDATA[
StartWindow( {id}, {x}, {y}, {visible}, {fadetime}, {alpha},
{movealpha}, {dragdrop} );
{movealpha}, {dragdrop}, {playondrop} );
]]>
</start>
<end tag="Window">
......
/* XML application for skin.dtd (Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp).
* Includes actions from skin.act.
* Generated 2003/05/01 15:30:24.
* Generated 2003/10/22 19:09:40.
*
* This program was generated with the FleXML XML processor generator,
* (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
......@@ -78,7 +78,7 @@ void STag_Window(void)
StartWindow( A_Window_id, A_Window_x, A_Window_y, A_Window_visible, A_Window_fadetime, A_Window_alpha,
A_Window_movealpha, A_Window_dragdrop );
A_Window_movealpha, A_Window_dragdrop, A_Window_playondrop );
} /* STag_Window */
......
......@@ -3,7 +3,7 @@
* skin.dtd: DTD for the VLC skins
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
* $Id: skin.dtd,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -71,6 +71,7 @@
alpha CDATA "255"
movealpha CDATA "255"
dragdrop CDATA "true"
playondrop CDATA "true"
>
<!ELEMENT ControlGroup (ControlGroup|ImageControl|ButtonControl|PlayListControl|
......
/* XML processor/application API for skin.dtd (Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp).
* Generated 2003/05/01 15:30:24.
* Generated 2003/10/22 19:09:40.
*
* This program was generated with the FleXML XML processor generator,
* (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
......@@ -238,6 +238,8 @@ typedef char* AT_ThemeInfo_webpage;
#define AU_ThemeInfo_webpage NULL
typedef char* AT_ButtonControl_onmouseout;
#define AU_ButtonControl_onmouseout NULL
typedef char* AT_Window_playondrop;
#define AU_Window_playondrop NULL
typedef char* AT_CheckBoxControl_tooltiptext1;
#define AU_CheckBoxControl_tooltiptext1 NULL
typedef char* AT_CheckBoxControl_tooltiptext2;
......@@ -380,6 +382,7 @@ extern AT_Event_event A_Event_event;
extern AT_RectangleControl_h A_RectangleControl_h;
extern AT_ThemeInfo_webpage A_ThemeInfo_webpage;
extern AT_ButtonControl_onmouseout A_ButtonControl_onmouseout;
extern AT_Window_playondrop A_Window_playondrop;
extern AT_CheckBoxControl_tooltiptext1 A_CheckBoxControl_tooltiptext1;
extern AT_CheckBoxControl_tooltiptext2 A_CheckBoxControl_tooltiptext2;
extern AT_ImageControl_id A_ImageControl_id;
......
......@@ -2,7 +2,7 @@
* wrappers.cpp: Wrappers around C++ objects
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: wrappers.cpp,v 1.12 2003/06/22 12:46:49 asmax Exp $
* $Id: wrappers.cpp,v 1.13 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -83,11 +83,12 @@ void AddThemeInfo( char *name, char *author, char *email, char *webpage )
}
//---------------------------------------------------------------------------
void StartWindow( char *name, char *x, char *y, char *visible, char *fadetime,
char *alpha, char *movealpha, char *dragdrop )
char *alpha, char *movealpha, char *dragdrop, char *playondrop )
{
g_pIntf->p_sys->p_theme->AddWindow( name, atoi( x ), atoi( y ),
ConvertBoolean( visible ), atoi( fadetime ), atoi( alpha ),
atoi( movealpha ), ConvertBoolean( dragdrop ) );
atoi( movealpha ), ConvertBoolean( dragdrop ),
ConvertBoolean( playondrop ) );
}
//---------------------------------------------------------------------------
void EndWindow()
......
......@@ -2,7 +2,7 @@
* wrappers.h: Wrappers around C++ objects
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: wrappers.h,v 1.4 2003/04/20 20:28:39 ipkiss Exp $
* $Id: wrappers.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -54,7 +54,7 @@ extern "C" {
//---------------------------------------------------------------------------
void StartWindow( char *name, char *x, char *y, char *visible,
char *fadetime, char *alpha, char *movealpha,
char *dragdrop );
char *dragdrop, char *playondrop );
void EndWindow();
//---------------------------------------------------------------------------
......
......@@ -2,7 +2,7 @@
* theme.h: Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: theme.h,v 1.5 2003/06/22 12:46:49 asmax Exp $
* $Id: theme.h,v 1.6 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -69,7 +69,8 @@ class Theme
void ShowTheme();
virtual void AddWindow( string name, int x, int y, bool visible,
int fadetime, int alpha, int movealpha, bool dragdrop ) = 0;
int fadetime, int alpha, int movealpha, bool dragdrop,
bool playondrop ) = 0;
virtual void ChangeClientWindowName( string name ) = 0;
SkinWindow * GetWindow( string name );
......
......@@ -2,7 +2,7 @@
* vlcproc.cpp: VlcProc class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: vlcproc.cpp,v 1.50 2003/10/20 22:27:05 gbazin Exp $
* $Id: vlcproc.cpp,v 1.51 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -139,7 +139,7 @@ bool VlcProc::EventProc( Event *evt )
return true;
case VLC_DROP:
DropFile( evt->GetParam1() );
DropFile( evt->GetParam1(), evt->GetParam2() );
return true;
case VLC_PLAY:
......@@ -431,21 +431,23 @@ void VlcProc::LoadSkin()
}
//---------------------------------------------------------------------------
void VlcProc::DropFile( unsigned int param )
void VlcProc::DropFile( unsigned int param1, long param2 )
{
// Get pointer to file
char *FileName = (char *)param;
char *FileName = (char *)param1;
// Add the new file to the playlist
if( p_intf->p_sys->p_playlist != NULL )
{
if( config_GetInt( p_intf, "enqueue" ) )
if( param2 == 0 )
{
// Enqueue the item
playlist_Add( p_intf->p_sys->p_playlist, FileName, 0, 0,
PLAYLIST_APPEND, PLAYLIST_END );
}
else
{
// Enqueue and play the item
playlist_Add( p_intf->p_sys->p_playlist, FileName, 0, 0,
PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
}
......@@ -458,7 +460,6 @@ void VlcProc::DropFile( unsigned int param )
// Refresh interface
InterfaceRefresh();
}
//---------------------------------------------------------------------------
......
......@@ -2,7 +2,7 @@
* vlcproc.h: VlcProc class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: vlcproc.h,v 1.10 2003/07/20 20:42:23 ipkiss Exp $
* $Id: vlcproc.h,v 1.11 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -41,7 +41,7 @@ class VlcProc
// Vlc methods
void LoadSkin();
void DropFile( unsigned int param );
void DropFile( unsigned int param1, long param2 );
void PauseStream();
void PlayStream();
void StopStream();
......
......@@ -2,7 +2,7 @@
* window.h: Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: window.h,v 1.6 2003/10/17 18:17:28 ipkiss Exp $
* $Id: window.h,v 1.7 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -87,7 +87,7 @@ class SkinWindow
// Constructors
SkinWindow( intf_thread_t *_p_intf, int x, int y, bool visible,
int transition, int normalalpha, int movealpha, bool dragdrop );
int transition, int normalalpha, int movealpha, bool dragdrop );
// Destructors
virtual ~SkinWindow();
......
......@@ -2,7 +2,7 @@
* win32_dragdrop.cpp: Win32 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_dragdrop.cpp,v 1.4 2003/04/16 21:40:07 ipkiss Exp $
* $Id: win32_dragdrop.cpp,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -35,9 +35,10 @@
//---------------------------------------------------------------------------
Win32DropObject::Win32DropObject() : IDropTarget()
Win32DropObject::Win32DropObject( bool playondrop ) : IDropTarget()
{
References = 1;
PlayOnDrop = playondrop;
}
//---------------------------------------------------------------------------
Win32DropObject::~Win32DropObject()
......@@ -57,13 +58,21 @@ void Win32DropObject::HandleDrop( HDROP HDrop )
char *FileName = new char[NameLength];
DragQueryFile( (HDROP)HDrop, i, FileName, NameLength );
// The pointer must not be deleted here because it will be deleted
// in the VLC specific messages processing function
PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 0 );
if( PlayOnDrop )
{
// The pointer must not be deleted here because it will be deleted
// in the VLC specific messages processing function
PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 1 );
}
else
{
// The pointer must not be deleted here because it will be deleted
// in the VLC specific messages processing function
PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 0 );
}
}
DragFinish( (HDROP)HDrop );
}
//---------------------------------------------------------------------------
STDMETHODIMP Win32DropObject::QueryInterface( REFIID iid, void FAR* FAR* ppv )
......
......@@ -2,7 +2,7 @@
* win32_dragdrop.h: Win32 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_dragdrop.h,v 1.2 2003/04/12 21:43:27 asmax Exp $
* $Id: win32_dragdrop.h,v 1.3 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -36,7 +36,7 @@
class Win32DropObject : public IDropTarget
{
public:
Win32DropObject();
Win32DropObject( bool playondrop );
virtual ~Win32DropObject();
protected:
......@@ -55,6 +55,7 @@ class Win32DropObject : public IDropTarget
private:
unsigned long References;
bool PlayOnDrop;
// Helper function
void HandleDrop( HDROP HDrop );
......
......@@ -2,7 +2,7 @@
* win32_theme.cpp: Win32 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_theme.cpp,v 1.9 2003/06/22 12:46:49 asmax Exp $
* $Id: win32_theme.cpp,v 1.10 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -280,7 +280,7 @@ void Win32Theme::ChangeClientWindowName( string name )
}
//---------------------------------------------------------------------------
void Win32Theme::AddWindow( string name, int x, int y, bool visible,
int fadetime, int alpha, int movealpha, bool dragdrop )
int fadetime, int alpha, int movealpha, bool dragdrop, bool playondrop )
{
HWND hwnd;
......@@ -302,7 +302,7 @@ void Win32Theme::AddWindow( string name, int x, int y, bool visible,
SetWindowLongPtr( hwnd, GWLP_USERDATA, (LONG_PTR)p_intf );
WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, hwnd, x, y,
visible, fadetime, alpha, movealpha, dragdrop ) ) ;
visible, fadetime, alpha, movealpha, dragdrop, playondrop ) ) ;
}
//---------------------------------------------------------------------------
void Win32Theme::ChangeTray()
......
......@@ -2,7 +2,7 @@
* win32_theme.h: Win32 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_theme.h,v 1.4 2003/04/21 21:51:16 asmax Exp $
* $Id: win32_theme.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -68,7 +68,8 @@ class Win32Theme : public Theme
// !!!
virtual void AddWindow( string name, int x, int y, bool visible,
int fadetime, int alpha, int movealpha, bool dragdrop );
int fadetime, int alpha, int movealpha, bool dragdrop,
bool playondrop );
virtual void ChangeClientWindowName( string name );
// Taskbar && system tray
......
......@@ -2,7 +2,7 @@
* win32_window.cpp: Win32 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_window.cpp,v 1.13 2003/10/17 18:17:28 ipkiss Exp $
* $Id: win32_window.cpp,v 1.14 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -66,16 +66,16 @@
//---------------------------------------------------------------------------
Win32Window::Win32Window( intf_thread_t *p_intf, HWND hwnd, int x, int y,
bool visible, int transition, int normalalpha, int movealpha,
bool dragdrop )
bool dragdrop, bool playondrop )
: SkinWindow( p_intf, x, y, visible, transition, normalalpha, movealpha,
dragdrop )
{
// Set handles
hWnd = hwnd;
hWnd = hwnd;
// Set position parameters
CursorPos = new POINT;
WindowPos = new POINT;
CursorPos = new POINT;
WindowPos = new POINT;
// Create Tool Tip Window
ToolTipWindow = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
......@@ -91,7 +91,7 @@ Win32Window::Win32Window( intf_thread_t *p_intf, HWND hwnd, int x, int y,
ToolTipInfo.uId = (unsigned int)hWnd;
ToolTipInfo.lpszText = NULL;
ToolTipInfo.rect.left = ToolTipInfo.rect.top = 0;
ToolTipInfo.rect.right = ToolTipInfo.rect.bottom = 0;
ToolTipInfo.rect.right = ToolTipInfo.rect.bottom = 0;
SendMessage( ToolTipWindow, TTM_ADDTOOL, 0,
(LPARAM)(LPTOOLINFO) &ToolTipInfo );
......@@ -101,11 +101,10 @@ Win32Window::Win32Window( intf_thread_t *p_intf, HWND hwnd, int x, int y,
{
// Initialize the OLE library
OleInitialize( NULL );
DropTarget = (LPDROPTARGET) new Win32DropObject();
DropTarget = (LPDROPTARGET) new Win32DropObject( playondrop );
// register the listview as a drop target
RegisterDragDrop( hWnd, DropTarget );
}
}
//---------------------------------------------------------------------------
Win32Window::~Win32Window()
......@@ -129,7 +128,6 @@ Win32Window::~Win32Window()
// Uninitialize the OLE library
OleUninitialize();
}
}
//---------------------------------------------------------------------------
bool Win32Window::ProcessOSEvent( Event *evt )
......@@ -265,7 +263,6 @@ void Win32Window::RefreshFromImage( int x, int y, int w, int h )
// Release window device context
ReleaseDC( hWnd, DC );
}
//---------------------------------------------------------------------------
void Win32Window::WindowManualMove()
......@@ -281,7 +278,6 @@ void Win32Window::WindowManualMove()
// Free memory
delete[] NewPos;
}
//---------------------------------------------------------------------------
void Win32Window::WindowManualMoveInit()
......@@ -330,7 +326,6 @@ void Win32Window::ChangeToolTipText( string text )
(LPARAM)(LPTOOLINFO)&ToolTipInfo );
}
}
}
//---------------------------------------------------------------------------
......
......@@ -2,7 +2,7 @@
* win32_window.h: Win32 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_window.h,v 1.4 2003/10/17 18:17:28 ipkiss Exp $
* $Id: win32_window.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -55,7 +55,7 @@ class Win32Window : public SkinWindow
// Cosntructors
Win32Window( intf_thread_t *_p_intf, HWND hwnd, int x, int y,
bool visible, int transition, int normalalpha, int movealpha,
bool dragdrop );
bool dragdrop, bool playondrop );
// Destructors
virtual ~Win32Window();
......
......@@ -2,7 +2,7 @@
* x11_dragdrop.cpp: X11 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_dragdrop.cpp,v 1.6 2003/06/22 15:07:13 asmax Exp $
* $Id: x11_dragdrop.cpp,v 1.7 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -43,10 +43,12 @@
//---------------------------------------------------------------------------
X11DropObject::X11DropObject( intf_thread_t *_p_intf, Window win)
X11DropObject::X11DropObject( intf_thread_t *_p_intf, Window win,
bool playondrop )
{
p_intf = _p_intf;
Win = win;
PlayOnDrop = playondrop;
display = p_intf->p_sys->display;
}
//---------------------------------------------------------------------------
......@@ -111,23 +113,23 @@ void X11DropObject::DndEnter( ldata_t data )
}
//---------------------------------------------------------------------------
void X11DropObject::DndPosition( ldata_t data )
{
{
Window src = data[0];
Time time = data[2];
XLOCK;
Atom selectionAtom = XInternAtom( display, "XdndSelection", 0 );
Atom targetAtom = XInternAtom( display, "text/plain", 0 );
Atom propAtom = XInternAtom( display, "VLC_SELECTION", 0 );
Atom actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
Atom typeAtom = XInternAtom( display, "XdndFinished", 0 );
// Convert the selection into the given target
// NEEDED or it doesn't work !!!
XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
time );
actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
typeAtom = XInternAtom( display, "XdndStatus", 0 );
......@@ -151,7 +153,7 @@ void X11DropObject::DndPosition( ldata_t data )
event.xclient.data.l[2] = 0;
event.xclient.data.l[3] = (w << 16) | h;
event.xclient.data.l[4] = actionAtom;
// Tell the source whether we accept the drop
XSendEvent( display, src, False, 0, &event );
XUNLOCK;
......@@ -170,21 +172,21 @@ void X11DropObject::DndDrop( ldata_t data )
Atom selectionAtom = XInternAtom( display, "XdndSelection", 0 );
Atom targetAtom = XInternAtom( display, "text/plain", 0 );
Atom propAtom = XInternAtom( display, "VLC_SELECTION", 0 );
Atom actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
Atom typeAtom = XInternAtom( display, "XdndFinished", 0 );
// Convert the selection into the given target
XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
time );
// Read the selection
// Read the selection
Atom type;
int format;
unsigned long nitems, nbytes;
char *buffer;
XGetWindowProperty( display, src, propAtom, 0, 1024, False,
AnyPropertyType, &type, &format, &nitems, &nbytes,
XGetWindowProperty( display, src, propAtom, 0, 1024, False,
AnyPropertyType, &type, &format, &nitems, &nbytes,
(unsigned char**)&buffer );
string selection = "";
if( buffer != NULL )
......@@ -193,12 +195,12 @@ void X11DropObject::DndDrop( ldata_t data )
}
XFree( buffer );
XUNLOCK;
if( selection != "" )
{
// TODO: multiple files handling
string::size_type end = selection.find( "\n", 0 );
selection = selection.substr( 0, end -1 );
selection = selection.substr( 0, end -1 );
end = selection.find( "\r", 0 );
selection = selection.substr( 0, end -1 );
......@@ -208,12 +210,19 @@ void X11DropObject::DndDrop( ldata_t data )
{
selection.erase( pos + 1, 2 );
}
char *name = new char[selection.size()+1];
strncpy( name, selection.c_str(), selection.size()+1 );
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 0 );
if( PlayOnDrop )
{
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 1 );
}
else
{
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 0 );
}
}
// Tell the source we accepted the drop
XEvent event;
event.type = ClientMessage;
......
......@@ -2,7 +2,7 @@
* x11_dragdrop.h: X11 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_dragdrop.h,v 1.4 2003/06/09 12:33:16 asmax Exp $
* $Id: x11_dragdrop.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -40,11 +40,12 @@ class X11DropObject
private:
intf_thread_t *p_intf;
Window Win;
bool PlayOnDrop;
Display *display;
Atom target;
public:
X11DropObject( intf_thread_t *_p_intf, Window win );
X11DropObject( intf_thread_t *_p_intf, Window win, bool playondrop );
virtual ~X11DropObject();
void DndEnter( ldata_t data );
......
......@@ -2,7 +2,7 @@
* x11_theme.cpp: X11 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_theme.cpp,v 1.15 2003/06/22 12:46:49 asmax Exp $
* $Id: x11_theme.cpp,v 1.16 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -90,7 +90,7 @@ void X11Theme::ChangeClientWindowName( string name )
}
//---------------------------------------------------------------------------
void X11Theme::AddWindow( string name, int x, int y, bool visible,
int fadetime, int alpha, int movealpha, bool dragdrop )
int fadetime, int alpha, int movealpha, bool dragdrop, bool playondrop )
{
// Create the window
Window root = DefaultRootWindow( display );
......@@ -118,16 +118,16 @@ void X11Theme::AddWindow( string name, int x, int y, bool visible,
motifWmHints.flags = 2; // MWM_HINTS_DECORATIONS;
motifWmHints.decorations = 0;
XLOCK;
XChangeProperty( display, wnd, hints_atom, hints_atom, 32,
PropModeReplace, (unsigned char *)&motifWmHints,
XChangeProperty( display, wnd, hints_atom, hints_atom, 32,
PropModeReplace, (unsigned char *)&motifWmHints,
sizeof( motifWmHints ) / sizeof( long ) );
// Change the window title
XStoreName( display, wnd, name.c_str() );
XUNLOCK;
WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, wnd, x, y,
visible, fadetime, alpha, movealpha, dragdrop, name ) ) ;
WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, wnd, x, y,
visible, fadetime, alpha, movealpha, dragdrop, playondrop, name ) ) ;
}
//---------------------------------------------------------------------------
void X11Theme::ChangeTray()
......
......@@ -2,7 +2,7 @@
* x11_theme.h: X11 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_theme.h,v 1.3 2003/06/01 22:11:24 asmax Exp $
* $Id: x11_theme.h,v 1.4 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -72,7 +72,8 @@ class X11Theme : public Theme
// !!!
virtual void AddWindow( string name, int x, int y, bool visible,
int fadetime, int alpha, int movealpha, bool dragdrop );
int fadetime, int alpha, int movealpha, bool dragdrop,
bool playondrop );
virtual void ChangeClientWindowName( string name );
// Taskbar && system tray
......
......@@ -2,7 +2,7 @@
* x11_window.cpp: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.cpp,v 1.29 2003/10/19 22:25:10 gbazin Exp $
* $Id: x11_window.cpp,v 1.30 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -60,9 +60,9 @@ static void DrawToolTipText( tooltip_t *tooltip );
//---------------------------------------------------------------------------
X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
bool visible, int transition, int normalalpha, int movealpha,
bool dragdrop, string name )
bool dragdrop, bool playondrop, string name )
: SkinWindow( p_intf, x, y, visible, transition, normalalpha, movealpha,
dragdrop )
dragdrop )
{
// Set handles
Wnd = wnd;
......@@ -86,12 +86,12 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
if( DragDrop )
{
// register the listview as a drop target
DropObject = new X11DropObject( p_intf, Wnd );
DropObject = new X11DropObject( p_intf, Wnd, playondrop );
Atom xdndAtom = XInternAtom( display, "XdndAware", False );
char xdndVersion = 4;
XLOCK;
XChangeProperty( display, wnd, xdndAtom, XA_ATOM, 32,
XChangeProperty( display, wnd, xdndAtom, XA_ATOM, 32,
PropModeReplace, (unsigned char *)&xdndVersion, 1);
XUNLOCK;
}
......@@ -154,7 +154,6 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
ClickedTime = 0;
// TODO: can be retrieved somewhere ?
DblClickDelay = 400;
}
//---------------------------------------------------------------------------
X11Window::~X11Window()
......
......@@ -2,7 +2,7 @@
* x11_window.h: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.h,v 1.7 2003/10/19 20:32:21 asmax Exp $
* $Id: x11_window.h,v 1.8 2003/10/22 19:12:56 ipkiss Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -86,7 +86,7 @@ class X11Window : public SkinWindow
// Cosntructors
X11Window( intf_thread_t *_p_intf, Window wnd, int x, int y,
bool visible, int transition, int normalalpha, int movealpha,
bool dragdrop, string name );
bool dragdrop, bool playondrop, string name );
// Destructors
virtual ~X11Window();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment