Fixed a problem in the demo and plugged a potential leak in SetDashes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-11-19 20:43:04 +00:00
parent 08da19d737
commit 05f30eecb7
3 changed files with 17 additions and 7 deletions

View File

@@ -88,14 +88,13 @@ class MyCanvas(wxScrolledWindow):
for style in [wxDOT, wxLONG_DASH, wxSHORT_DASH, wxDOT_DASH, wxUSER_DASH]: for style in [wxDOT, wxLONG_DASH, wxSHORT_DASH, wxDOT_DASH, wxUSER_DASH]:
pen = wxPen("DARK ORCHID", 1, style) pen = wxPen("DARK ORCHID", 1, style)
if style == wxUSER_DASH: if style == wxUSER_DASH:
pen.SetDashes([0, 1, 2, 3, 4, 5, 6, 7, 8]) pen.SetDashes([1, 2, 3, 4, 5, 6, 7, 8])
pen.SetColour("RED") pen.SetColour("RED")
dc.SetPen(pen) dc.SetPen(pen)
dc.DrawLine(300, y, 400, y) dc.DrawLine(300, y, 400, y)
y = y + 10 y = y + 10
self.DrawSavedLines(dc) self.DrawSavedLines(dc)
dc.EndDrawing() dc.EndDrawing()

View File

@@ -628,6 +628,11 @@ public:
// The list of ints for the dashes needs to exist for the life of the pen
// so we make it part of the class to save it. wxPyPen is aliased to wxPen
// in _extras.py
%{ %{
class wxPyPen : public wxPen { class wxPyPen : public wxPen {
public: public:
@@ -636,13 +641,16 @@ public:
{ m_dash = NULL; } { m_dash = NULL; }
~wxPyPen() { ~wxPyPen() {
if (m_dash) if (m_dash)
delete m_dash; delete [] m_dash;
} }
void SetDashes(int nb_dashes, const wxDash *dash) { void SetDashes(int nb_dashes, const wxDash *dash) {
if (m_dash)
delete [] m_dash;
m_dash = new wxDash[nb_dashes]; m_dash = new wxDash[nb_dashes];
for (int i=0; i<nb_dashes; i++) for (int i=0; i<nb_dashes; i++) {
m_dash[i] = dash[i]; m_dash[i] = dash[i];
}
wxPen::SetDashes(nb_dashes, m_dash); wxPen::SetDashes(nb_dashes, m_dash);
} }
@@ -652,7 +660,6 @@ private:
%} %}
class wxPyPen : public wxPen { class wxPyPen : public wxPen {
public: public:
wxPyPen(wxColour& colour, int width=1, int style=wxSOLID); wxPyPen(wxColour& colour, int width=1, int style=wxSOLID);
@@ -663,6 +670,7 @@ public:
class wxPenList : public wxObject { class wxPenList : public wxObject {
public: public:

View File

@@ -190,13 +190,16 @@ public:
{ m_dash = NULL; } { m_dash = NULL; }
~wxPyPen() { ~wxPyPen() {
if (m_dash) if (m_dash)
delete m_dash; delete [] m_dash;
} }
void SetDashes(int nb_dashes, const wxDash *dash) { void SetDashes(int nb_dashes, const wxDash *dash) {
if (m_dash)
delete [] m_dash;
m_dash = new wxDash[nb_dashes]; m_dash = new wxDash[nb_dashes];
for (int i=0; i<nb_dashes; i++) for (int i=0; i<nb_dashes; i++) {
m_dash[i] = dash[i]; m_dash[i] = dash[i];
}
wxPen::SetDashes(nb_dashes, m_dash); wxPen::SetDashes(nb_dashes, m_dash);
} }