How to modulate a PopupMenu's items?

Godot Version

4.2

Question

I can’t get how to modulate it, which is ruinng my theme. what are those items? how to change them?

seeing in the theme editor, it seems to be a panel? how to get access to its modulate? nothing noticable spotted on docs.godotengine.org

as you did show, and as I said, there’s no modulate property, so how does one modulate the items themselves?

you didn’t say a word in your reply, ignoring the fact I already went to the documentation, being implicit that I saw PopupMenu, you didn’t even ask if I checked it

it is modifiable, so modulating is also possible, stick a process function on it.

it is modifiable

what is moddable?

so modulating is also possible

how?

stick a process function on it

that assertion is as clear as “do something”

Which is what the definition of modulation is.

The other option, since this popupmenu inst directly a referencing a CanvasItem, is to create a popup and design your own popup menu with controls that you could stick CanvasItem into and use the modulation property.

Which is what the definition of modulation is.

what are you talking about? I have the feeling you are confusing changing/modding/modifying with modulate, a property in Godot which is a colour and multiplies the base color of a CanvasItem node

The other option, since this popupmenu inst directly a referencing a CanvasItem, is to create a popup and design your own popup menu with controls that you could stick CanvasItem into and use the modulation property.

PopupMenus are inherited by Popups, and Popups aren’t control, they are Window. I am not simply using a PopupMenu, but an OptionsMenu, which creates a PopupMenu, are you saying I should recreate the entire functionality of OptionsMenu?

by the way, are you trying to say that any node which is a child of a CanvasItem will modulate with it, even if not with the modulate property?

Your original question was ‘how do I modulate items in a popupMenu’. I understand that the window/node doesn’t provide base functionality to access its children directly. (I also can’t say for sure you could just do a get_children to access the underlying control nodes that make up the popupmenu window). (You could potentially take a peek at the remote view of the tree while the popup is active to see how it is structured)

There are modulate functions for icon colors on the popupmenu items. But I suspect that is too limiting. So there may be granularity with the API about what can be done. But since the themes are available to modify you could listen for a signal of an item that is hovered over and with a process function ease between two set colors over time setting the theme incrementally. Anyway I probably wouldnt go that route.

So the last option would be (if you couldn’t get some roundabout access to popmenu children, which I don’t think there would be anything to stop us) is to make your own popup with the functionality and contols you want.

But since the themes are available to modify you could listen for a signal of an item that is hovered over and with a process function ease between two set colors over time setting the theme incrementally

it seems I confused you. I am not modulating with a theme — I am modulating it separately. the theme is uglily blue, but changing style by style is boring, even with copy/paste, so I just modulated the main node, which allowed for easy pretty colours.

I’ll try to get its children, thank you for the tips

Im an electronic and signals guy, modulation has a different meaning to me. Color modulation is something different, and I actually don’t think the word really works. It’s static (I guess its modulation over distance rather than time), more like a noise texture for applying gradient patterns. And in drawing, when you device a drawing pattern, where the base paper color and the color of your medium, that is called a “texture”. So I’m still confused.

this is not a place to debate over terms. see the modulate property. it’s not modulation, I didn’t use that term before, you introduced it by your confusion

printing get_children() of the OptionsMenu gives an empty array. their item are not changable except from the functions in docs.godotegnine.org.

now: half-solved but fully content with the result: I used TabContainer instead of an OptionsMenu, which is modulatable, and has a better UI

Not debating, but modulate has a particular meaning. Which implies an influence of something, mostly over time. And modulate and modulation are the same word. And Godot has modulate properties inside canvases items that are intended to be modulated. (E.g. Flashing)

just say I want to change the color.

Anyway but I started playing with popupmenu. You just add the controls under it.

Just so you know a popup menu is an embedded window. the documentation says this.

I’m not sure what an options menu is, but if it’s a control by another name, you are just drawing onto the root canvas of the scene tree.

Anyway nice job. Good luck.