diff --git a/src/core/caret.cpp b/src/core/caret.cpp index 99fdca2d..15b66254 100644 --- a/src/core/caret.cpp +++ b/src/core/caret.cpp @@ -108,10 +108,17 @@ void CCaret::DrawInverse() if (m_Cairo == NULL) { m_Cairo = gdk_cairo_create(m_pParent->window); + if (cairo_status(m_Cairo) != CAIRO_STATUS_SUCCESS) { + cairo_destroy(m_Cairo); + m_Cairo = NULL; + } + } + + if (m_Cairo) { + cairo_set_source_rgb(m_Cairo, 1, 1, 1); + cairo_set_operator(m_Cairo, CAIRO_OPERATOR_DIFFERENCE); + cairo_rectangle(m_Cairo, m_Pos.x, m_Pos.y, m_Width, m_Height); + cairo_fill(m_Cairo); } - cairo_set_source_rgb(m_Cairo, 1, 1, 1); - cairo_set_operator(m_Cairo, CAIRO_OPERATOR_DIFFERENCE); - cairo_rectangle(m_Cairo, m_Pos.x, m_Pos.y, m_Width, m_Height); - cairo_fill(m_Cairo); }