]> git.saurik.com Git - wxWidgets.git/commitdiff
Extract X11 Display wrapper class in a private header.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Aug 2010 22:15:13 +0000 (22:15 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Aug 2010 22:15:13 +0000 (22:15 +0000)
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
src/gtk/utilsgtk.cpp

index c7dce2a3699593dd6e051d64d9d21076cc9f90a4..4fbca1af5c8c95e115c82bc4e6ba1894c99db690 100644 (file)
@@ -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 <X11/Xlib.h>
+
 // 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_
index e337be979235751aa3babba287ad8da657318ec6..93b8f02790f29680f0e163f17b9083c6253d6fe7 100644 (file)
@@ -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;