I had a typo, it should be  "awful/widget/common.lua".

> So far so good. I can see that in source code that a signal is added.
>
>          if press then
>             ret[#ret]:add_signal("press", function(bobj, ...) press(...)
> end)
>
> To my understanding, a table with all created buttons is returned.

Yes, "new" function creates a new button, connects it to signals and
returns a table of buttons. But return value is not really important.
We only care about, to which signal it is connected. Here "press". So,
search where it is emitted for something like `emit_signal("press"`.

> I still couldn't find as to how would I know what is passed to the `press
> callback`. Your answer definitely helped but I still couldn't get the actual
> way of finding the parameters.

In awful/widget/common.lua "list_update", done for every button:
                    -- Create a proxy button object: it will receive the real
                    -- press and release events, and will propagate them the the
                    -- button object the user provided, but with the object as
                    -- argument.
                    local btn = capi.button { modifiers = b.modifiers,
button = b.button }
                    btn:add_signal("press", function ()
b:emit_signal("press", o) end)

Then all "btn"s inserted to widgets (imagebox and textbox) in this list.
            w[k]:buttons(btns)
            w[k + 1]:buttons(btns)
>From reference:
-buttons (buttons_table)
    Set the widget buttons. It will receive a press or release event
when of this buttons is pressed.

You may ask how or where widget gets this event, I also don't know.
However what is only important is argument of "press" signal emitted
from real press event. This "o" comes from "objects" table which is an
argument to list_update. And in awful/widget/tasklist.lua
"tasklist_update", shownclients passed as "objects" to list_update. So
"o" is a client object.

I also don't know much about awesome codebase. I tried to relate
connected signal to emitted for tasklist and it is a little bit
cumbersome, but hopefully helped.

-- 
Can Altıparmak

--
To unsubscribe, send mail to [email protected].

Reply via email to