Give this a try:
Code:
local BUTTON_SIZE, BUTTON_SPACING = 50, 1
------------------------------------------------------
--[[ Bar Setup ]]--
------------------------------------------------------
local barFrame = CreateFrame("Frame", "XBar_Vehicle", UIParent, "SecureHandlerStateTemplate")
barFrame:SetSize((BUTTON_SIZE + BUTTON_SPACING) * NUM_ACTIONBAR_BUTTONS, BUTTON_SIZE)
barFrame:SetPoint("CENTER")
local background = barFrame:CreateTexture(nil, "BACKGROUND")
background:SetColorTexture(0, 0, 0, 0.5)
background:SetAllPoints()
barFrame:Execute([[
ActionButtons = newtable()
]])
------------------------------------------------------
--[[ Button Setup ]]--
------------------------------------------------------
local buttons = { }
for id = 1, NUM_ACTIONBAR_BUTTONS do
local button = CreateFrame("CheckButton", "$parent_Button" .. id, barFrame, "ActionBarButtonTemplate")
button:SetID(id)
button:SetSize(BUTTON_SIZE, BUTTON_SIZE)
if id ~= 1 then
button:SetPoint("LEFT", buttons[id - 1], "RIGHT", BUTTON_SPACING, 0)
else
button:SetPoint("LEFT", 5, 0)
end
button.NormalTexture:Hide()
barFrame:SetFrameRef("button", button)
barFrame:Execute(([[
ActionButtons[%s] = self:GetFrameRef("button")
]]):format(id))
buttons[id] = button
end
barFrame.Buttons = buttons
------------------------------------------------------
--[[ Secure Stuff ]]--
------------------------------------------------------
barFrame:Execute([[
self:SetAttribute("frameref-button", nil)
]])
barFrame:SetAttribute('_onstate-page', ([[
newstate = tonumber(newstate)
self:SetAttribute("actionpage", newstate)
local pageOffset, hasAction = (newstate - 1) * NUM_ACTIONBAR_BUTTONS
for id = 1, #ActionButtons do
if HasAction(id + pageOffset) then
ActionButtons[id]:SetAttribute('actionpage', newstate)
hasAction = true
else
ActionButtons[id]:SetAttribute('actionpage', nil)
end
end
if not hasAction then
self:SetAttribute("state-page", nil)
end
]]):gsub('NUM_ACTIONBAR_BUTTONS', NUM_ACTIONBAR_BUTTONS))
RegisterStateDriver(barFrame, "page", ("[vehicleui] %s; [overridebar] %s; 1"):format(GetVehicleBarIndex(), GetOverrideBarIndex()))
RegisterStateDriver(barFrame, "visibility", "[vehicleui] [overridebar] show; hide")
OverrideActionBarLeaveFrameLeaveButton:SetParent(barFrame)
OverrideActionBarLeaveFrameLeaveButton:SetAllPoints(buttons[12])
RegisterStateDriver(OverrideActionBarLeaveFrameLeaveButton, "visibility", "[canexitvehicle] show; hide")
If that works I can modify it so you only need the one bar and not separate main, vehicle, override...