X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fdisplay.hh;h=81dd27c5dffdce3dfdb92d913795cb95b8810ad5;hb=65e91ac3d6bbfec368bae9957c18c477d4f53ec5;hp=5f658cd3a71a8770a531f1505b4853e6f7c7ae0b;hpb=00bc993775b916de76772bdc5e31618076194797;p=chaz%2Fopenbox diff --git a/otk/display.hh b/otk/display.hh index 5f658cd3..81dd27c5 100644 --- a/otk/display.hh +++ b/otk/display.hh @@ -6,12 +6,10 @@ extern "C" { #include } -#include - namespace otk { class ScreenInfo; -class GCCache; +class RenderControl; class Display; @@ -21,10 +19,6 @@ extern Display *display; //! Manages a single X11 display. class Display { -public: - //! A List of ScreenInfo instances - typedef std::vector ScreenInfoList; - private: //! The X display ::Display *_display; @@ -53,27 +47,21 @@ private: //! The value of the mask for the ScrollLock modifier unsigned int _scroll_lock_mask; + //! The key codes for the modifier keys + XModifierKeymap *_modmap; + //! The number of requested grabs on the display int _grab_count; - //! A list of information for all screens on the display - ScreenInfoList _screenInfoList; + //! When true, X errors will be ignored. Use with care. + bool _ignore_errors; - //! A cache for re-using GCs, used by the drawing objects - /*! - @see Pen - @see Font - @see Image - @see ImageControl - @see Texture - */ - GCCache *_gccache; + //! A list of information for all screens on the display + ScreenInfo** _screeninfo_list; - // Handles X errors on the display - /* - Displays the error if compiled for debugging. - */ - //int xerrorHandler(::Display *d, XErrorEvent *e); + //! A list of RenderControl objects, which are used for all graphics on a + //! screen + RenderControl** _rendercontrol_list; public: //! Initializes the class, opens the X display @@ -85,9 +73,6 @@ public: //! Destroys the class, closes the X display ~Display(); - //! Returns the GC cache for the application - inline GCCache *gcCache() const { return _gccache; } - //! Gets information on a specific screen /*! Returns a ScreenInfo class, which contains information for a screen on the @@ -95,10 +80,13 @@ public: @param snum The screen number of the screen to retrieve info on @return Info on the requested screen, in a ScreenInfo class */ - const ScreenInfo* screenInfo(int snum); + const ScreenInfo* screenInfo(int snum) const; //! Find a ScreenInfo based on a root window - const ScreenInfo* findScreen(Window root); + const ScreenInfo* findScreen(Window root) const; + + //! Gets the RenderControl for a screen + const RenderControl *renderControl(int snum) const; //! Returns if the display has the xkb extension available inline bool xkb() const { return _xkb; } @@ -114,9 +102,15 @@ public: inline unsigned int numLockMask() const { return _num_lock_mask; } inline unsigned int scrollLockMask() const { return _scroll_lock_mask; } + const XModifierKeymap *modifierMap() const { return _modmap; } inline ::Display* operator*() const { return _display; } + //! When true, X errors will be ignored. + inline bool ignoreErrors() const { return _ignore_errors; } + //! Set whether X errors should be ignored. Use with care. + void setIgnoreErrors(bool t); + //! Grabs the display void grab(); @@ -139,6 +133,7 @@ public: bool allow_scroll_lock) const; void ungrabKey(unsigned int keycode, unsigned int modifiers, Window grab_window) const; + void ungrabAllKeys(Window grab_window) const; }; }