]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/dc.cpp
added option to hide page controls
[wxWidgets.git] / src / gtk1 / dc.cpp
index c53c2d26fde4a31104c6724d01e8fbee39b1ed4a..054ba0407c09049a2bd60f6edbad53c6cea06fdb 100644 (file)
@@ -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 )
@@ -287,8 +293,10 @@ void wxDC::SetDeviceOrigin( long x, long y )
 
 void wxDC::GetDeviceOrigin( long *x, long *y )
 {
-  if (x) *x = m_externalDeviceOriginX;
-  if (y) *y = m_externalDeviceOriginY;
+//  if (x) *x = m_externalDeviceOriginX;
+//  if (y) *y = m_externalDeviceOriginY;
+  if (x) *x = m_deviceOriginX;
+  if (y) *y = m_deviceOriginY;
 };
 
 void wxDC::SetInternalDeviceOrigin( long x, long y )
@@ -361,10 +369,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);
+  }
 };