]> Dogcows Code - chaz/openbox/blob - otk/display.hh
make shape work with the titlebar and handle
[chaz/openbox] / otk / display.hh
1 // -*- mode: C++; indent-tabs-mode: nil; -*-
2 #ifndef __display_hh
3 #define __display_hh
4
5 extern "C" {
6 #include <X11/Xlib.h>
7 }
8
9 #include <vector>
10
11 namespace otk {
12
13 class ScreenInfo;
14 class BGCCache;
15
16 //! Manages a single X11 display.
17 /*!
18 This class is static, and cannot be instantiated.
19 Use the initialize() method to open the display and ready it for use.
20 Use the destroy() method to close it and clean up the class' data.
21 */
22 class OBDisplay
23 {
24 public:
25 //! The X display
26 static Display *display;
27
28 //! A List of ScreenInfo instances
29 typedef std::vector<ScreenInfo> ScreenInfoList;
30
31 private:
32 //! Does the display have the Shape extention?
33 static bool _shape;
34 //! Base for events for the Shape extention
35 static int _shape_event_basep;
36
37 //! Does the display have the Xinerama extention?
38 static bool _xinerama;
39 //! Base for events for the Xinerama extention
40 static int _xinerama_event_basep;
41
42 //! A list of all possible combinations of keyboard lock masks
43 static unsigned int _mask_list[8];
44
45 //! The number of requested grabs on the display
46 static int _grab_count;
47
48 //! A list of information for all screens on the display
49 static ScreenInfoList _screenInfoList;
50
51 //! A cache for re-using GCs, used by the drawing objects
52 /*!
53 @see BPen
54 @see BFont
55 @see BImage
56 @see BImageControl
57 @see BTexture
58 */
59 static BGCCache *_gccache;
60
61 //! Handles X errors on the display
62 /*!
63 Displays the error if compiled for debugging.
64 */
65 static int xerrorHandler(Display *d, XErrorEvent *e);
66
67 //! Prevents instantiation of the class
68 OBDisplay();
69
70 public:
71 //! Initializes the class, opens the X display
72 /*!
73 @see OBDisplay::display
74 @param name The name of the X display to open. If it is null, the DISPLAY
75 environment variable is used instead.
76 */
77 static void initialize(char *name);
78 //! Destroys the class, closes the X display
79 static void destroy();
80
81 //! Returns the GC cache for the application
82 inline static BGCCache *gcCache() { return _gccache; }
83
84 //! Gets information on a specific screen
85 /*!
86 Returns a ScreenInfo class, which contains information for a screen on the
87 display.
88 @param snum The screen number of the screen to retrieve info on
89 @return Info on the requested screen, in a ScreenInfo class
90 */
91 static const ScreenInfo* screenInfo(int snum);
92
93 //! Returns if the display has the shape extention available
94 inline static bool shape() { return _shape; }
95 //! Returns the shape extension's event base
96 inline static int shapeEventBase() { return _shape_event_basep; }
97 //! Returns if the display has the xinerama extention available
98 inline static bool xinerama() { return _xinerama; }
99
100 //! Grabs the display
101 static void grab();
102
103 //! Ungrabs the display
104 static void ungrab();
105
106
107
108 /* TEMPORARY */
109 static void grabButton(unsigned int button, unsigned int modifiers,
110 Window grab_window, bool owner_events,
111 unsigned int event_mask, int pointer_mode,
112 int keyboard_mode, Window confine_to, Cursor cursor,
113 bool allow_scroll_lock);
114 static void ungrabButton(unsigned int button, unsigned int modifiers,
115 Window grab_window);
116 };
117
118 }
119
120 #endif // __display_hh
This page took 0.036854 seconds and 4 git commands to generate.