From acdc8633de4cad24bc971f3a3a0c3072fcc7f09a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 22 Aug 2010 22:15:13 +0000 Subject: [PATCH] Extract X11 Display wrapper class in a private header. No real changes, just extract a private Dpy class used by wxGTK to a header and rename it to wxX11Display. This will allow reusing it from X11 wxUIActionSimulator implementation in the upcoming commits. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/unix/utilsx11.h | 32 +++++++++++++++++++++++++++----- src/gtk/utilsgtk.cpp | 14 +++----------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/include/wx/unix/utilsx11.h b/include/wx/unix/utilsx11.h index c7dce2a369..4fbca1af5c 100644 --- a/include/wx/unix/utilsx11.h +++ b/include/wx/unix/utilsx11.h @@ -1,11 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/unix/utilsx11.h // Purpose: Miscellaneous X11 functions -// Author: Mattia Barbon, Vaclav Slavik +// Author: Mattia Barbon, Vaclav Slavik, Vadim Zeitlin // Modified by: // Created: 25.03.02 // RCS-ID: $Id$ // Copyright: (c) wxWidgets team +// (c) 2010 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -15,6 +16,8 @@ #include "wx/defs.h" #include "wx/gdicmn.h" +#include + // NB: Content of this header is for wxWidgets' private use! It is not // part of public API and may be modified or even disappear in the future! @@ -46,8 +49,27 @@ void wxSetFullScreenStateX11(WXDisplay* display, WXWindow rootWindow, WXWindow window, bool show, wxRect *origSize, wxX11FullScreenMethod method); -#endif - // __WXMOTIF__, __WXGTK__, __WXX11__ -#endif - // _WX_UNIX_UTILSX11_H_ +// Class wrapping X11 Display: it opens it in ctor and closes it in dtor. +class wxX11Display +{ +public: + wxX11Display() { m_dpy = XOpenDisplay(NULL); } + ~wxX11Display() { if ( m_dpy ) XCloseDisplay(m_dpy); } + + operator Display *() const { return m_dpy; } + + // Using DefaultRootWindow() with an object of wxX11Display class doesn't + // compile because it is a macro which tries to cast wxX11Display so + // provide a convenient helper. + Window DefaultRoot() const { return DefaultRootWindow(m_dpy); } + +private: + Display *m_dpy; + + wxDECLARE_NO_COPY_CLASS(wxX11Display); +}; + +#endif // __WXMOTIF__, __WXGTK__, __WXX11__ + +#endif // _WX_UNIX_UTILSX11_H_ diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index e337be9792..93b8f02790 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -48,6 +48,8 @@ #if wxUSE_DETECT_SM #include "X11/Xlib.h" #include "X11/SM/SMlib.h" + + #include "wx/unix/utilsx11.h" #endif //----------------------------------------------------------------------------- @@ -242,17 +244,7 @@ wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer) #if wxUSE_DETECT_SM static wxString GetSM() { - class Dpy - { - public: - Dpy() { m_dpy = XOpenDisplay(NULL); } - ~Dpy() { if ( m_dpy ) XCloseDisplay(m_dpy); } - - operator Display *() const { return m_dpy; } - private: - Display *m_dpy; - } dpy; - + wxX11Display dpy; if ( !dpy ) return wxEmptyString; -- 2.45.2