]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/dcclient.cpp
add support for alpha in color dialog on OSX, see #14127
[wxWidgets.git] / src / x11 / dcclient.cpp
index dfe17e7020613dafbf418936d5ac22a551cb1492..46a9657a2400855bdca8d77d17ffdefb8b35adec 100644 (file)
@@ -183,7 +183,7 @@ wxWindowDCImpl::wxWindowDCImpl( wxDC* owner, wxWindow *window )
 
     m_font = window->GetFont();
 
-    m_x11window = (WXWindow*) window->GetMainWindow();
+    m_x11window = (WXWindow*) window->X11GetMainWindow();
 
     // not realized ?
     if (!m_x11window)
@@ -621,7 +621,7 @@ void wxWindowDCImpl::DoDrawPoint( wxCoord x, wxCoord y )
     CalcBoundingBox (x, y);
 }
 
-void wxWindowDCImpl::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset )
+void wxWindowDCImpl::DoDrawLines( int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset )
 {
     wxCHECK_RET( IsOk(), wxT("invalid window dc") );
 
@@ -641,7 +641,7 @@ void wxWindowDCImpl::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCo
     delete[] xpoints;
 }
 
-void wxWindowDCImpl::DoDrawPolygon( int n, wxPoint points[],
+void wxWindowDCImpl::DoDrawPolygon( int n, const wxPoint points[],
                                 wxCoord xoffset, wxCoord yoffset,
                                 wxPolygonFillMode WXUNUSED(fillStyle) )
 {
@@ -1291,7 +1291,7 @@ void wxWindowDCImpl::DoDrawBitmap( const wxBitmap &bitmap,
   // wxUSE_NANOX/!wxUSE_NANOX
 
 bool wxWindowDCImpl::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
-                         wxDC *source, wxCoord xsrc, wxCoord ysrc, 
+                         wxDC *source, wxCoord xsrc, wxCoord ysrc,
                          wxRasterOperationMode logical_func, bool useMask,
                          wxCoord xsrcMask, wxCoord ysrcMask )
 {
@@ -1570,8 +1570,8 @@ void wxWindowDCImpl::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
     PangoLayout *layout = pango_layout_new(m_context);
     pango_layout_set_font_description(layout, m_fontdesc);
 
-    const wxCharBuffer data = wxConvUTF8.cWC2MB( text );
-    pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
+    const wxScopedCharBuffer data(text.utf8_str());
+    pango_layout_set_text(layout, data, data.length());
 
     // Measure layout.
     int w,h;
@@ -1658,7 +1658,9 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
                                 wxCoord *descent, wxCoord *externalLeading,
                                 const wxFont *font ) const
 {
-    wxCHECK_RET( IsOk(), wxT("invalid dc") );
+    // Do not test for DC validity here, querying text extents is supposed to
+    // work even with a non-initialized wxMemoryDC. And the code below does
+    // actually work in this case.
 
     if (string.empty())
     {
@@ -1675,8 +1677,8 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
     else
         pango_layout_set_font_description(layout, m_fontdesc);
 
-    const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
-    pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
+    const wxScopedCharBuffer data(string.utf8_str());
+    pango_layout_set_text(layout, data, data.length());
 
     // Measure text.
     int w,h;
@@ -1721,7 +1723,8 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
 
 wxCoord wxWindowDCImpl::GetCharWidth() const
 {
-    wxCHECK_MSG( IsOk(), 0, wxT("invalid dc") );
+    // Do not test for DC validity here for the same reasons as in
+    // DoGetTextExtent() above.
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );
@@ -1755,7 +1758,8 @@ wxCoord wxWindowDCImpl::GetCharWidth() const
 
 wxCoord wxWindowDCImpl::GetCharHeight() const
 {
-    wxCHECK_MSG( IsOk(), 0, wxT("invalid dc") );
+    // Do not test for DC validity here for the same reasons as in
+    // DoGetTextExtent() above.
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );
@@ -2356,7 +2360,7 @@ wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *window )
     m_x11window = (WXWindow*) window->GetClientAreaWindow();
 
     // Adjust the client area when the wxWindow is not using 2 X11 windows.
-    if (m_x11window == (WXWindow*) window->GetMainWindow())
+    if (m_x11window == (WXWindow*) window->X11GetMainWindow())
     {
         wxPoint ptOrigin = window->GetClientAreaOrigin();
         SetDeviceOrigin(ptOrigin.x, ptOrigin.y);