X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..246037e22990a4719c672c2e2a8b62b99cc4d49c:/src/gtk/dc.cpp?ds=sidebyside diff --git a/src/gtk/dc.cpp b/src/gtk/dc.cpp index c53c2d26fd..faba4faab6 100644 --- a/src/gtk/dc.cpp +++ b/src/gtk/dc.cpp @@ -3,7 +3,7 @@ // Purpose: // Author: Robert Roebling // Created: 01/02/97 -// Id: +// RCS-ID: $Id$ // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -136,11 +136,17 @@ void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) { wxList list; - list.DeleteContents(TRUE); - list.Append( new wxPoint(x1, y1) ); - list.Append( new wxPoint(x2, y2) ); - list.Append( new wxPoint(x3, y3) ); + list.Append( (wxObject*)new wxPoint(x1, y1) ); + list.Append( (wxObject*)new wxPoint(x2, y2) ); + list.Append( (wxObject*)new wxPoint(x3, y3) ); DrawSpline(&list); + wxNode *node = list.First(); + while (node) + { + wxPoint *p = (wxPoint*)node->Data(); + delete p; + node = node->Next(); + }; }; void wxDC::DrawSpline( wxList *points ) @@ -361,10 +367,25 @@ void wxDC::CalcBoundingBox( long x, long y ) void wxDC::ComputeScaleAndOrigin(void) { + // CMB: copy scale to see if it changes + double origScaleX = m_scaleX; + double origScaleY = m_scaleY; + m_scaleX = m_logicalScaleX * m_userScaleX; m_scaleY = m_logicalScaleY * m_userScaleY; m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; + + // CMB: if scale has changed call SetPen to recalulate the line width + if (m_scaleX != origScaleX || m_scaleY != origScaleY) + { + // this is a bit artificial, but we need to force wxDC to think + // the pen has changed + wxPen* pen = GetPen(); + wxPen tempPen; + m_pen = tempPen; + SetPen(pen); + } };