From 9aa62f449282d84a379e7e26e2e2eac13a112136 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 25 Mar 2023 15:31:30 +0100 Subject: Add Fl_Cairo_Graphics_Driver::focus_rect() override This allows to bypass what looks like a Cairo bug: FLTK_SCALING_FACTOR=1.7 bin/test/tabs click on tab2 ---> crash But no crash with other scaling factor values (e.g., 1.8). --- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx') diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx index e0cbf26ce..6db069b35 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx @@ -1422,4 +1422,20 @@ int Fl_Cairo_Graphics_Driver::antialias() { return (cairo_get_antialias(cairo_) != CAIRO_ANTIALIAS_NONE); } + +void Fl_Cairo_Graphics_Driver::focus_rect(int x, int y, int w, int h) +{ + cairo_save(cairo_); + cairo_set_line_width(cairo_, 1); + cairo_set_line_cap(cairo_, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cairo_, CAIRO_LINE_JOIN_MITER); + static double dots[2] = {1., 1.}; + cairo_set_dash(cairo_, dots, 2, 1); + cairo_set_antialias(cairo_, CAIRO_ANTIALIAS_NONE); + cairo_rectangle(cairo_, x, y, w-1, h-1); + cairo_stroke(cairo_); + cairo_restore(cairo_); + surface_needs_commit(); +} + #endif // USE_PANGO -- cgit v1.2.3