docs: def setPosition(self, position):
          """
          Sets the position for this widget and its parent.
          
          :param      position | <XDockToolbar.Position>
          """
          if position == self._position:
              return
          
          self._position = position
          
          widget   = self.window()
          layout   = self.layout()
          offset   = self.padding()
          min_size = self.minimumPixmapSize()
          
          # set the layout to north
          if position == XDockToolbar.Position.North:
              self.move(0, 0)
              widget.setContentsMargins(0, min_size.height() + offset, 0, 0)
              layout.setDirection(QBoxLayout.LeftToRight)
          
          # set the layout to east
          elif position == XDockToolbar.Position.East:
              self.move(0, 0)
              widget.setContentsMargins(min_size.width() + offset, 0, 0, 0)
              layout.setDirection(QBoxLayout.TopToBottom)
          
          # set the layout to the south
          elif position == XDockToolbar.Position.South:
              widget.setContentsMargins(0, 0, 0, min_size.height() + offset)
              layout.setDirection(QBoxLayout.LeftToRight)
          
          # set the layout to the west
          else:
              widget.setContentsMargins(0, 0, min_size.width() + offset, 0)
              layout.setDirection(QBoxLayout.TopToBottom)
          
          # update the label alignments
          for label in self.actionLabels():
              label.setPosition(position)
          
          # rebuilds the widget
          self.rebuild()
          self.update()