unsigned int screen_number;
std::string display_string;
Rect rect;
+#ifdef XINERAMA
+ RectList xinerama_areas;
+ bool xinerama_active;
+#endif
public:
ScreenInfo(BaseDisplay *d, unsigned int num);
inline unsigned int getHeight(void) const { return rect.height(); }
inline const std::string& displayString(void) const
{ return display_string; }
+#ifdef XINERAMA
+ inline const RectList &getXineramaAreas(void) const { return xinerama_areas; }
+ inline bool isXineramaActive(void) const { return xinerama_active; }
+#endif
};
};
BShape shape;
-#ifndef NOCLOBBER
+#ifdef XINERAMA
+ struct BXinerama {
+ bool extensions;
+ int event_basep, error_basep;
+ int major, minor; // version
+ };
+ BXinerama xinerama;
+#endif // XINERAMA
+
unsigned int MaskList[8];
size_t MaskListLength;
-#endif // NOCLOBBER
enum RunState { STARTUP, RUNNING, SHUTDOWN };
RunState run_state;
inline bool hasShapeExtensions(void) const
{ return shape.extensions; }
+#ifdef XINERAMA
+ inline bool hasXineramaExtensions(void) const
+ { return xinerama.extensions; }
+#endif // XINERAMA
inline bool doShutdown(void) const
{ return run_state == SHUTDOWN; }
inline bool isStartup(void) const
{ return screenInfoList.size(); }
inline int getShapeEventBase(void) const
{ return shape.event_basep; }
+#ifdef XINERAMA
+ inline int getXineramaMajorVersion(void) const
+ { return xinerama.major; }
+#endif // XINERAMA
inline void shutdown(void) { run_state = SHUTDOWN; }
inline void run(void) { run_state = RUNNING; }
void grabButton(unsigned int button, unsigned int modifiers,
Window grab_window, bool owner_events,
unsigned int event_mask, int pointer_mode,
- int keyboard_mode, Window confine_to, Cursor cursor) const;
+ int keyboard_mode, Window confine_to, Cursor cursor,
+ bool allow_scroll_lock) const;
void ungrabButton(unsigned int button, unsigned int modifiers,
Window grab_window) const;