]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/dcclient.cpp
don't send duplicate set/kill focus events when the text control part of the control...
[wxWidgets.git] / src / x11 / dcclient.cpp
index 2d5425934982efd501d5ce9c8392a77be8b3aa3f..d5832711b8b2e180aae0a8d00686ee65a6167906 100644 (file)
 #ifndef WX_PRECOMP
     #include "wx/app.h"
     #include "wx/window.h"
+    #include "wx/dcmemory.h"
+    #include "wx/math.h"
+    #include "wx/image.h"
+    #include "wx/module.h"
 #endif
 
-#include "wx/dcmemory.h"
-#include "wx/image.h"
-#include "wx/module.h"
 #include "wx/fontutil.h"
 
 #include "wx/x11/private.h"
 
-#include "wx/math.h"
-
 #if wxUSE_UNICODE
 #include "glib.h"
 #include "pango/pangox.h"
@@ -166,7 +165,7 @@ static void wxFreePoolGC( GC gc )
 
 IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
 
-wxWindowDC::wxWindowDC()
+void wxWindowDC::Init()
 {
     m_display = (WXDisplay *) NULL;
     m_penGC = (WXGC *) NULL;
@@ -179,7 +178,7 @@ wxWindowDC::wxWindowDC()
     m_owner = (wxWindow *)NULL;
 
 #if wxUSE_UNICODE
-    m_context = (PangoContext *)NULL;
+    m_context = wxTheApp->GetPangoContext();
     m_fontdesc = (PangoFontDescription *)NULL;
 #endif
 }
@@ -188,15 +187,8 @@ wxWindowDC::wxWindowDC( wxWindow *window )
 {
     wxASSERT_MSG( window, wxT("DC needs a window") );
 
-    m_display = (WXDisplay *) NULL;
-    m_penGC = (WXGC *) NULL;
-    m_brushGC = (WXGC *) NULL;
-    m_textGC = (WXGC *) NULL;
-    m_bgGC = (WXGC *) NULL;
-    m_cmap = (WXColormap *) NULL;
-    m_owner = (wxWindow *)NULL;
-    m_isMemDC = false;
-    m_isScreenDC = false;
+    Init();
+
     m_font = window->GetFont();
 
     m_window = (WXWindow*) window->GetMainWindow();
@@ -213,7 +205,6 @@ wxWindowDC::wxWindowDC( wxWindow *window )
     m_display = (WXDisplay *) wxGlobalDisplay();
 
 #if wxUSE_UNICODE
-    m_context = wxTheApp->GetPangoContext();
     m_fontdesc = window->GetFont().GetNativeFontInfo()->description;
 #endif
 
@@ -1594,7 +1585,7 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
 #endif
     {
         XDrawString( (Display*) m_display, (Window) m_window,
-            (GC) m_textGC, x, y + XFontStructGetAscent(xfont), text.c_str(), text.Len() );
+            (GC) m_textGC, x, y + XFontStructGetAscent(xfont), text.c_str(), text.length() );
     }
 
 #if 0
@@ -1670,7 +1661,7 @@ void wxWindowDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoor
     int direction, ascent, descent2;
     XCharStruct overall;
 
-    XTextExtents( xfont, (char*) string.c_str(), string.Len(), &direction,
+    XTextExtents( xfont, (char*) string.c_str(), string.length(), &direction,
         &ascent, &descent2, &overall);
 
     if (width)
@@ -2367,8 +2358,15 @@ wxPaintDC::wxPaintDC(wxWindow* window)
 class wxDCModule : public wxModule
 {
 public:
-    bool OnInit();
-    void OnExit();
+    // we must be cleaned up before wxDisplayModule which closes the global
+    // display
+    wxDCModule()
+    {
+        AddDependency(wxClassInfo::FindClass(_T("wxX11DisplayModule")));
+    }
+
+    bool OnInit() { wxInitGCPool(); return true; }
+    void OnExit() { wxCleanUpGCPool(); }
 
 private:
     DECLARE_DYNAMIC_CLASS(wxDCModule)
@@ -2376,13 +2374,3 @@ private:
 
 IMPLEMENT_DYNAMIC_CLASS(wxDCModule, wxModule)
 
-bool wxDCModule::OnInit()
-{
-    wxInitGCPool();
-    return true;
-}
-
-void wxDCModule::OnExit()
-{
-    wxCleanUpGCPool();
-}