docs: def borderPath(self):
          """
          Returns the border path that will be drawn for this widget.
          
          :return     <QPainterPath>
          """
          
          path = QPainterPath()
          
          x = 1
          y = 1
          w = self.width() - 2
          h = self.height() - 2
          pad = self.popupPadding()
          anchor = self.anchor()
          
          # create a path for a top-center based popup
          if anchor == XPopupWidget.Anchor.TopCenter:
              path.moveTo(x, y + pad)
              path.lineTo(x + ((w/2) - pad), y + pad)
              path.lineTo(x + (w/2), y)
              path.lineTo(x + ((w/2) + pad), y + pad)
              path.lineTo(x + w, y + pad)
              path.lineTo(x + w, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y + pad)
          
          # create a path for a top-left based popup
          elif anchor == XPopupWidget.Anchor.TopLeft:
              path.moveTo(x, y + pad)
              path.lineTo(x + pad, y)
              path.lineTo(x + 2 * pad, y + pad)
              path.lineTo(x + w, y + pad)
              path.lineTo(x + w, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y + pad)
          
          # create a path for a top-right based popup
          elif anchor == XPopupWidget.Anchor.TopRight:
              path.moveTo(x, y + pad)
              path.lineTo(x + w - 2 * pad, y + pad)
              path.lineTo(x + w - pad, y)
              path.lineTo(x + w, y + pad)
              path.lineTo(x + w, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y + pad)
          
          # create a path for a bottom-left based popup
          elif anchor == XPopupWidget.Anchor.BottomLeft:
              path.moveTo(x, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h - pad)
              path.lineTo(x + 2 * pad, y + h - pad)
              path.lineTo(x + pad, y + h)
              path.lineTo(x, y + h - pad)
              path.lineTo(x, y)
          
          # create a path for a south based popup
          elif anchor == XPopupWidget.Anchor.BottomCenter:
              path.moveTo(x, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h - pad)
              path.lineTo(x + ((w/2) + pad), y + h - pad)
              path.lineTo(x + (w/2), y + h)
              path.lineTo(x + ((w/2) - pad), y + h - pad)
              path.lineTo(x, y + h - pad)
              path.lineTo(x, y)
          
          # create a path for a bottom-right based popup
          elif anchor == XPopupWidget.Anchor.BottomRight:
              path.moveTo(x, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h - pad)
              path.lineTo(x + w - pad, y + h)
              path.lineTo(x + w - 2 * pad, y + h - pad)
              path.lineTo(x, y + h - pad)
              path.lineTo(x, y)
          
          # create a path for a right-top based popup
          elif anchor == XPopupWidget.Anchor.RightTop:
              path.moveTo(x, y)
              path.lineTo(x + w - pad, y)
              path.lineTo(x + w, y + pad)
              path.lineTo(x + w - pad, y + 2 * pad)
              path.lineTo(x + w - pad, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y)
          
          # create a path for a right-center based popup
          elif anchor == XPopupWidget.Anchor.RightCenter:
              path.moveTo(x, y)
              path.lineTo(x + w - pad, y)
              path.lineTo(x + w - pad, y + ((h/2) - pad))
              path.lineTo(x + w, y + (h/2))
              path.lineTo(x + w - pad, y + ((h/2) + pad))
              path.lineTo(x + w - pad, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y)
          
          # create a path for a right-bottom based popup
          elif anchor == XPopupWidget.Anchor.RightBottom:
              path.moveTo(x, y)
              path.lineTo(x + w - pad, y)
              path.lineTo(x + w - pad, y + h - 2 * pad)
              path.lineTo(x + w, y + h - pad)
              path.lineTo(x + w - pad, y + h)
              path.lineTo(x, y + h)
              path.lineTo(x, y)
          
          # create a path for a left-top based popup
          elif anchor == XPopupWidget.Anchor.LeftTop:
              path.moveTo(x + pad, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h)
              path.lineTo(x + pad, y + h)
              path.lineTo(x + pad, y + 2 * pad)
              path.lineTo(x, y + pad)
              path.lineTo(x + pad, y)
          
          # create a path for an left-center based popup
          elif anchor == XPopupWidget.Anchor.LeftCenter:
              path.moveTo(x + pad, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h)
              path.lineTo(x + pad, y + h)
              path.lineTo(x + pad, y + ((h/2) + pad))
              path.lineTo(x, y + (h/2))
              path.lineTo(x + pad, y + ((h/2) - pad))
              path.lineTo(x + pad, y)
          
          # create a path for a left-bottom based popup
          elif anchor == XPopupWidget.Anchor.LeftBottom:
              path.moveTo(x + pad, y)
              path.lineTo(x + w, y)
              path.lineTo(x + w, y + h)
              path.lineTo(x + pad, y + h)
              path.lineTo(x, y + h - pad)
              path.lineTo(x + pad, y + h - 2 * pad)
              path.lineTo(x + pad, y)
          
          return path