Run when the mouse is dragged starting in the frame. In order for a drag action to begin, the mouse button must be pressed down within the frame and moved more than several (~10) pixels in any direction without being released.

Signature:

OnDragStart(self, "button")

Arguments:

  • self - Reference to the widget for which the script was run (button)
  • button - Name of the mouse button responsible for the drag action (string)
    • Button4
    • Button5
    • LeftButton
    • MiddleButton
    • RightButton

Examples:

-- Illustrates script handlers involved in dragging. Dragging to or
-- from either button will display messages detailing the process.
local nextNum = 1
local last
local handlers = {
  "OnMouseDown", "OnMouseUp", "OnDragStart", "OnDragStop", "OnReceiveDrag"
}
local function CreateButton()
  local curNum = nextNum
  local b = CreateFrame("Button", "Test"..curNum, UIParent, "UIPanelButtonTemplate2")
  if curNum == 1 then
    b:SetPoint("CENTER")
  else
    b:SetPoint("LEFT", last, "RIGHT", 5, 0)
  end
  b:SetText(curNum)
  b:RegisterForDrag("LeftButton", "RightButton")
  
  for _, handler in ipairs(handlers) do
    b:SetScript(handler, function(self, button)
      button = button and ", "..button or ""
      DEFAULT_CHAT_FRAME:AddMessage(format("%s: %d%s", handler, curNum, button))
    end)
  end
  
  nextNum = nextNum + 1
  last = b
end
CreateButton()
CreateButton()