* implemented double click event for X11 skins. The delay is hard-coded
[vlc.git] / modules / gui / skins / x11 / x11_window.h
1 /*****************************************************************************
2  * x11_window.h: X11 implementation of the Window class
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id: x11_window.h,v 1.3 2003/06/07 00:36:28 asmax Exp $
6  *
7  * Authors: Cyril Deguet     <asmax@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
22  * USA.
23  *****************************************************************************/
24
25
26 #ifndef VLC_SKIN_X11_WIN
27 #define VLC_SKIN_X11_WIN
28
29 //--- X11 -------------------------------------------------------------------
30 #include <X11/Xlib.h>
31
32 //---------------------------------------------------------------------------
33 class Graphics;
34 class Event;
35
36 //---------------------------------------------------------------------------
37 class X11Window : public SkinWindow
38 {
39     private:
40         // General parameters
41         Window Wnd;
42         Display *display;
43         GC Gc;
44         int CursorX;
45         int CursorY;
46         int WindowX;
47         int WindowY;
48         string Name;
49
50         // Drag&Drop
51         X11DropObject *DropObject;
52
53         // Tooltip texts
54         Window ToolTipWindow;
55 //        TOOLINFO ToolTipInfo;
56
57         // Double-click handling
58         int ClickedX;
59         int ClickedY;
60         int ClickedTime;
61         int DblClickDelay;
62
63         // Left button down
64         bool LButtonDown;
65         // Right button down
66         bool RButtonDown;
67
68     public:
69         // Cosntructors
70         X11Window( intf_thread_t *_p_intf, Window wnd, int x, int y,
71             bool visible, int transition, int normalalpha, int movealpha,
72             bool dragdrop, string name );
73
74         // Destructors
75         virtual ~X11Window();
76
77         // Event processing
78         virtual bool ProcessOSEvent( Event *evt );
79
80         // Window graphic aspect
81         virtual void OSShow( bool show );
82         virtual void RefreshFromImage( int x, int y, int w, int h );
83         virtual void SetTransparency( int Value = -1 );
84         virtual void WindowManualMove();
85         virtual void WindowManualMoveInit();
86
87         // Window methods
88         virtual void Move( int left, int top );
89         virtual void Size( int width, int height );
90
91         // Specific X11 methods
92         Window GetHandle() { return Wnd; };
93
94         // Tooltip texts
95         virtual void ChangeToolTipText( string text );
96
97         // Getters
98         string GetName() { return Name; }
99 };
100 //---------------------------------------------------------------------------
101
102 #endif