docs: def on_button_press(self, event):
          """Select items
  
          When the mouse button is pressed, the selection is updated.
  
          :param event: The button event
          """
          if event.get_button()[1] not in self._buttons:
              return False  # Only handle events for registered buttons (left mouse clicks)
  
          if event.get_state()[1] & constants.RUBBERBAND_MODIFIER:
              return False  # Mouse clicks with pressed shift key are handled in another tool
  
          # Special case: moving the NameView
          # This is only allowed, if the hovered item is a NameView and the Ctrl-key is pressed and the only selected
          # item is the parental StateView. In this case, the selection and _item will no longer be looked at,
          # but only _move_name_v
          self._item = self.get_item()
          if isinstance(self._item, NameView):
              selected_items = self.view.selected_items
              if event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK and len(selected_items) == 1 and next(iter(selected_items)) is \
                      self._item.parent:
                  self._move_name_v = True
              else:
                  self._item = self._item.parent
  
          if not self._move_name_v:
              self._old_selection = self.view.selected_items
              if self._item not in self.view.selected_items:
                  # When items are to be moved, a button-press should not cause any deselection.
                  # However, the selection is stored, in case no move operation is performed.
                  self.view.handle_new_selection(self._item)
  
          if not self.view.is_focus():
              self.view.grab_focus()
  
          return True