From b877098bac8d7bcdd98a9634dce02c603475f05f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 2 Nov 2009 16:22:10 +0000 Subject: [PATCH] fix draw-arc to skip drawing instead of setting the scale to 0 svn: r16502 --- src/wxxt/src/DeviceContexts/WindowDC.cc | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/wxxt/src/DeviceContexts/WindowDC.cc b/src/wxxt/src/DeviceContexts/WindowDC.cc index 362577fd97..ee8203fdf1 100644 --- a/src/wxxt/src/DeviceContexts/WindowDC.cc +++ b/src/wxxt/src/DeviceContexts/WindowDC.cc @@ -1217,16 +1217,20 @@ void wxWindowDC::DrawArc(double x, double y, double w, double h, double start, d yy = SmoothingXFormY(y); ww = SmoothingXFormWL(w, x); hh = SmoothingXFormHL(h, y); - - cairo_set_matrix_create(m); - cairo_current_matrix (CAIRO_DEV, m); - cairo_translate(CAIRO_DEV, xx, yy); - cairo_scale(CAIRO_DEV, ww, hh); - cairo_new_path(CAIRO_DEV); - cairo_arc_negative(CAIRO_DEV, 0.5, 0.5, 0.5, start, end); - cairo__set_matrix(CAIRO_DEV, m); - cairo_stroke(CAIRO_DEV); - cairo_matrix_destroy(m); + + if ((ww > 0.0) && (hh > 0.0)) { + cairo_save(CAIRO_DEV); + cairo_set_matrix_create(m); + cairo_current_matrix (CAIRO_DEV, m); + cairo_translate(CAIRO_DEV, xx, yy); + cairo_scale(CAIRO_DEV, ww, hh); + cairo_new_path(CAIRO_DEV); + cairo_arc_negative(CAIRO_DEV, 0.5, 0.5, 0.5, start, end); + cairo__set_matrix(CAIRO_DEV, m); + cairo_stroke(CAIRO_DEV); + cairo_restore(CAIRO_DEV); + cairo_matrix_destroy(m); + } } return;