by omitting borders via CSS.
renderFrameGap
fn
void renderFrameGap(gtk.style_context.StyleContext context, cairo.context.Context cr, double x, double y, double width, double height, gtk.types.PositionType gapSide, double xy0Gap, double xy1Gap)Renders a frame around the rectangle defined by (x, y, width, height), leaving a gap on one side. xy0_gap and xy1_gap will mean X coordinates for [gtk.types.PositionType.Top] and [gtk.types.PositionType.Bottom] gap sides, and Y coordinates for [gtk.types.PositionType.Left] and [gtk.types.PositionType.Right].
Typical rendering of a frame with a gap:

Parameters
context | a #GtkStyleContext |
cr | a #cairo_t |
x | X origin of the rectangle |
y | Y origin of the rectangle |
width | rectangle width |
height | rectangle height |
gapSide | side where the gap is |
xy0Gap | initial coordinate (X or Y depending on gap_side) for the gap |
xy1Gap | end coordinate (X or Y depending on gap_side) for the gap |
Deprecated
Use [gtk.global.renderFrame] instead. Themes can create gaps