X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ace35c629320bd0980b3ade4ba928f4d5b33b5ed..2e2a55b22eebde25797bd030660d8c644bc7700b:/src/gtk1/dcclient.cpp diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index 5eb1d99388..87bbe49cab 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -7,10 +7,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "dcclient.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -143,8 +139,6 @@ void gdk_wx_draw_bitmap(GdkDrawable *drawable, // Implement Pool of Graphic contexts. Creating them takes too much time. //----------------------------------------------------------------------------- -#define GC_POOL_SIZE 200 - enum wxPoolGCType { wxGC_ERROR = 0, @@ -1156,7 +1150,7 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, else { #if GTK_CHECK_VERSION(2,2,0) - if (use_bitmap.HasPixbuf()) + if (!gtk_check_version(2,2,0) && use_bitmap.HasPixbuf()) { gdk_draw_pixbuf(m_window, m_penGC, use_bitmap.GetPixbuf(), @@ -1219,7 +1213,6 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, bool use_bitmap_method = false; bool is_mono = false; - // TODO: use the mask origin when drawing transparently if (xsrcMask == -1 && ysrcMask == -1) { xsrcMask = xsrc; @@ -1349,6 +1342,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, GdkGC *gc = gdk_gc_new( new_mask ); col.pixel = 0; gdk_gc_set_foreground( gc, &col ); + gdk_gc_set_ts_origin( gc, -xsrcMask, -ysrcMask); gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, bm_ww, bm_hh ); col.pixel = 0; gdk_gc_set_background( gc, &col ); @@ -1366,20 +1360,28 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, if (is_mono) { if (new_mask) + { gdk_gc_set_clip_mask( m_textGC, new_mask ); + gdk_gc_set_clip_origin( m_textGC, cx, cy ); + } else + { gdk_gc_set_clip_mask( m_textGC, mask ); - // was: gdk_gc_set_clip_origin( m_textGC, xx, yy ); - gdk_gc_set_clip_origin( m_textGC, cx, cy ); + gdk_gc_set_clip_origin( m_textGC, cx-xsrcMask, cy-ysrcMask ); + } } else { if (new_mask) + { gdk_gc_set_clip_mask( m_penGC, new_mask ); + gdk_gc_set_clip_origin( m_penGC, cx, cy ); + } else + { gdk_gc_set_clip_mask( m_penGC, mask ); - // was: gdk_gc_set_clip_origin( m_penGC, xx, yy ); - gdk_gc_set_clip_origin( m_penGC, cx, cy ); + gdk_gc_set_clip_origin( m_penGC, cx-xsrcMask, cy-ysrcMask ); + } } } @@ -1882,11 +1884,14 @@ void wxWindowDC::SetFont( const wxFont &font ) PangoContext *oldContext = m_context; // We might want to use the X11 context for faster - // rendering on screen + // rendering on screen. + // MR: Lets not want to do this, as this introduces libpangox dependancy. +#if 0 if (m_font.GetNoAntiAliasing()) m_context = m_owner->GtkGetPangoX11Context(); else - m_context = m_owner->GtkGetPangoDefaultContext(); +#endif + m_context = m_owner->GtkGetPangoDefaultContext(); // If we switch back/forth between different contexts // we also have to create a new layout. I think so, @@ -2371,12 +2376,12 @@ void wxWindowDC::ComputeScaleAndOrigin() if ((m_scaleX != origScaleX || m_scaleY != origScaleY) && (m_pen.Ok())) { - /* this is a bit artificial, but we need to force wxDC to think - the pen has changed */ - wxPen pen = m_pen; - m_pen = wxNullPen; - SetPen( pen ); - } + /* this is a bit artificial, but we need to force wxDC to think + the pen has changed */ + wxPen pen = m_pen; + m_pen = wxNullPen; + SetPen( pen ); + } } // Resolution in pixels per logical inch