> Without events, do you have a concrete idea how to signal to a hidden tab that something changed , such that it changes the color?
> I do not need a very limited API. I need a programmable tab bar.
I would give the tab a "wants attention" flag that gets unset when the tab is activated, and set when `(tab-request-attention TAB)' is called, e.g. by a process sentinal. Then the tab's title would switch from `tab-inactive-face' to `tab-wants-attention-face'.
I would do somethig else: attach to tab an ID; using this id I generate a function whose name depends on its id. I add this function in the list of hooks of a process.
When the process makes an internal change, it calls the hook attached exactly to the tab I am interested about. This function could chnage the color , make a beep, or force a show-tab.
The way I'm picturing it, the tab's internal state consists of four pieces of data: a title, a window (or possibly window configuration), a function that's called when it becomes active, and another function that's called when it becomes inactive. That *seems* like it's meeting all your requirements, as I've understood them.
Good. At least, yes.
NOT a window (or possibly window configuration). We need a LIST OF VARIABLES, local to tab. Imagine the tab as an actor. It can keep such a list. In fact, I wanted to say that I define a tab with message-passing style, and this is a way of implementing an object-oriented system.
Into such a list we can keep a variable that is evaluated to a window-config. In the moment of hide the tab, the hide event can save the current win-conf into a variable, and the show event can restore the winconf from this variable.