1. Dears, The following codes are aimed to accomplish such task: mouseover the first button and show the whole action bar:

     local OnEnterScript = [[
        if trigger == "OnMouseOver" then
            control:ChildUpdate("show", nil)
            toggledOn = true
        end
     ]]
    
     local OnLeaveScript = [[
        if trigger == "OnMouseOver" then
            control:ChildUpdate("hide", nil)
            toggledOn = false
        end
     ]]
    
     local OnUpdateScript = [[
        counter = counter + elapsed
        if self:IsUnderMouse(true) then
            counter = 0
        elseif counter > 0.4 then
            counter = 0
            control:ChildUpdate("hide", nil)
            toggledOn = false
        end
     ]]
    
     local OnShowScript = "self:Show()"
     local OnHideScript = "self:Hide()"
    
     function ZActionBar_LinkButton(bar, button)
        bar.header:WrapScript(button, "OnClick", OnClickScript)
        bar.header:WrapScript(button, "OnEnter", OnEnterScript)
        bar.header:WrapScript(button, "OnLeave", OnLeaveScript)
        if button:GetID() > 1 then
            button:SetAttribute("_childupdate-hide", OnHideScript)
        end
     end
    
     function ZActionBar_EnableButton(button, isAlwaysOn)
        button:SetAttribute("_childupdate-show", OnShowScript)
        if isAlwaysOn or button:GetID() == 1 then
            button:Show()
        end
     end
    

    When I mouseover the first button, through the commented prints, I can see ChileUpdate() function is called. But the hiden buttons do not show.

  2. I'm not sure, to be honest. There's so much missing code and context, I don't see anything immediately wrong.

  3. I'm not sure, to be honest. There's so much missing code and context, I don't see anything immediately wrong.

    Would you plz give some sample snippet? or any other project that implements such feature.

  4. I'm not sure, to be honest. There's so much missing code and context, I don't see anything immediately wrong.

    The 2nd parameter of control:ChildUpdate is "message", what's that exactly?

  5. I'm not sure, to be honest. There's so much missing code and context, I don't see anything immediately wrong.

    Would you plz give some sample snippet? or any other project that implements such feature.

    I'm sorry, I don't have a special purpose snippet like this.

    I'm not sure, to be honest. There's so much missing code and context, I don't see anything immediately wrong.

    The 2nd parameter of control:ChildUpdate is "message", what's that exactly?

    From the field guide to secure handlers documentation for ChildUpdate():

    "Iterates over all of the protected children of the header and checks for the attribute _childupdate-<scriptid>, if that is nil or scriptid is nil then it falls back to _childupdate. If the attribute has a string value then it is processed as a secure snippet and invoked with the parameters self, scriptid and message, where self is the child, and scriptid and message are the values from the call."

    It's an argument that you can use to make the same snippet/function do different things depending on the message you send in.

  6. Many thx. It seems that TotemTimers implements the feature. I'll look in to it.