]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/dcclient.cpp
disable select root menu command when the root is hidden
[wxWidgets.git] / src / x11 / dcclient.cpp
index 37787a903d75b339f579f3786a82c5da65c5f169..291b93b268d5e2a22f21fdade45005daab34e701 100644 (file)
     #include "wx/window.h"
     #include "wx/dcmemory.h"
     #include "wx/math.h"
+    #include "wx/image.h"
+    #include "wx/module.h"
 #endif
 
-#include "wx/image.h"
-#include "wx/module.h"
 #include "wx/fontutil.h"
 
 #include "wx/x11/private.h"
@@ -165,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;
@@ -178,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
 }
@@ -187,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();
@@ -212,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
 
@@ -1787,8 +1779,6 @@ void wxWindowDC::SetFont( const wxFont &font )
 
     m_font = font;
 
-    return;
-
 #if wxUSE_UNICODE
     m_fontdesc = font.GetNativeFontInfo()->description;
 #endif
@@ -2169,6 +2159,12 @@ void wxWindowDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoo
 
     if (!m_window) return;
 
+    if (width <= 0)
+        width = 1;
+
+    if (height <= 0)
+        height = 1;
+
     wxRect rect;
     rect.x = XLOG2DEV(x);
     rect.y = YLOG2DEV(y);
@@ -2366,8 +2362,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)
@@ -2375,13 +2378,3 @@ private:
 
 IMPLEMENT_DYNAMIC_CLASS(wxDCModule, wxModule)
 
-bool wxDCModule::OnInit()
-{
-    wxInitGCPool();
-    return true;
-}
-
-void wxDCModule::OnExit()
-{
-    wxCleanUpGCPool();
-}