~ubuntu-branches/ubuntu/wily/docky/wily-proposed

« back to all changes in this revision

Viewing changes to Docky.Windowing/Xlib/Xlib.cs

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2010-02-17 15:10:07 UTC
  • Revision ID: james.westby@ubuntu.com-20100217151007-msxpd0lsj300ndde
Tags: upstream-2.0.0
ImportĀ upstreamĀ versionĀ 2.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Permission is hereby granted, free of charge, to any person obtaining
 
2
// a copy of this software and associated documentation files (the
 
3
// "Software"), to deal in the Software without restriction, including
 
4
// without limitation the rights to use, copy, modify, merge, publish,
 
5
// distribute, sublicense, and/or sell copies of the Software, and to
 
6
// permit persons to whom the Software is furnished to do so, subject to
 
7
// the following conditions:
 
8
// 
 
9
// The above copyright notice and this permission notice shall be
 
10
// included in all copies or substantial portions of the Software.
 
11
// 
 
12
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
13
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
14
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
15
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 
16
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 
17
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 
18
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
19
//
 
20
// Copyright (c) 2006 Novell, Inc. (http://www.novell.com)
 
21
//
 
22
//
 
23
 
 
24
using System;
 
25
using System.Text;
 
26
using System.Runtime.InteropServices;
 
27
using System.Collections.Generic;
 
28
using System.Linq;
 
29
 
 
30
namespace Docky.Xlib {
 
31
 
 
32
        public enum PropertyMode
 
33
        {
 
34
                PropModeReplace = 0, 
 
35
                PropModePrepend = 1, 
 
36
                PropModeAppend = 2,
 
37
        }
 
38
        
 
39
        public enum Struts 
 
40
        {
 
41
                Left = 0,
 
42
                Right = 1,
 
43
                Top = 2,
 
44
                Bottom = 3,
 
45
                LeftStart = 4,
 
46
                LeftEnd = 5,
 
47
                RightStart = 6,
 
48
                RightEnd = 7,
 
49
                TopStart = 8,
 
50
                TopEnd = 9,
 
51
                BottomStart = 10,
 
52
                BottomEnd = 11
 
53
        }
 
54
        
 
55
        public enum XGravity
 
56
        {
 
57
                ForgetGravity = 0,
 
58
                NorthWestGravity = 1,
 
59
                NorthGravity = 2,
 
60
                NorthEastGravity = 3,
 
61
                WestGravity = 4,
 
62
                CenterGravity = 5,
 
63
                EastGravity = 6,
 
64
                SouthWestGravity = 7,
 
65
                SouthGravity = 8,
 
66
                SouthEastGravity = 9,
 
67
                StaticGravity = 10,
 
68
        }
 
69
        
 
70
        public static class Xlib {
 
71
                const string libX11 = "X11";
 
72
                const string libGdkX11 = "libgdk-x11";
 
73
                
 
74
                [DllImport (libGdkX11)]
 
75
                static extern IntPtr gdk_x11_drawable_get_xid (IntPtr handle);
 
76
                
 
77
                [DllImport (libGdkX11)]
 
78
                static extern IntPtr gdk_x11_drawable_get_xdisplay (IntPtr handle);
 
79
                
 
80
                [DllImport (libGdkX11)]
 
81
        static extern IntPtr gdk_x11_display_get_xdisplay (IntPtr display);
 
82
                
 
83
                [DllImport (libGdkX11)]
 
84
                static extern void gdk_x11_window_set_user_time (IntPtr window, uint timestamp);
 
85
 
 
86
                [DllImport (libX11)]
 
87
                public extern static IntPtr XOpenDisplay (IntPtr display);
 
88
                
 
89
                [DllImport (libX11)]
 
90
                public extern static int XInternAtoms (IntPtr display, string[] atom_names, int atom_count, bool only_if_exists, IntPtr[] atoms);
 
91
                
 
92
                [DllImport (libX11)]
 
93
                extern static int XChangeProperty (IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, int mode, IntPtr[] data, int nelements);
 
94
        
 
95
                [DllImport (libX11)]
 
96
                public extern static int XGetWindowProperty (IntPtr display, IntPtr window, IntPtr atom, IntPtr long_offset, 
 
97
                                                             IntPtr long_length, bool delete, IntPtr req_type, out IntPtr actual_type, 
 
98
                                                             out int actual_format, out IntPtr nitems, out IntPtr bytes_after, out IntPtr prop);
 
99
                
 
100
                public static IntPtr GdkWindowX11Xid (Gdk.Window window)
 
101
                {
 
102
                        return gdk_x11_drawable_get_xid (window.Handle);
 
103
                }
 
104
 
 
105
                public static IntPtr GdkDrawableXDisplay (Gdk.Window window)
 
106
                {
 
107
                        return gdk_x11_drawable_get_xdisplay (window.Handle);
 
108
                }
 
109
                
 
110
                public static IntPtr GdkDisplayXDisplay (Gdk.Display display)
 
111
                {
 
112
                        return gdk_x11_display_get_xdisplay (display.Handle);
 
113
                }
 
114
                
 
115
                public static int XChangeProperty (Gdk.Window window, IntPtr property, IntPtr type, int mode, IntPtr[] data)
 
116
                {
 
117
                        return XChangeProperty (GdkDrawableXDisplay (window), GdkWindowX11Xid (window), property, type, 32, mode, data, data.Length); 
 
118
                }
 
119
                
 
120
                public static void GdkWindowSetUserTime (Gdk.Window window, uint timestamp)
 
121
                {
 
122
                        gdk_x11_window_set_user_time (window.Handle, timestamp);
 
123
                }
 
124
 
 
125
        }
 
126
}