Godot Version
4.6.stable
Question
I use native [url]text[/url] BBCode tags on RichTextLabel to make clickable in-game text.
My requirements:
Disable the automatic pointing-hand cursor entirely when hovering over url text; always keep default arrow cursor.
Is there any built-in property, project setting or workaround to completely turn off the default hover hand cursor of native [url] tags?
Have you read this in the docs about your options and tried them?
Yes, I’ve already tried setting the mouse cursor, but it still doesn’t work. Even though I handled it in the mouse-enter event for text wrapped with the [url] tag, it still has no effect. I also tried setting it in _process, but that didn’t work either.
The more information you give us, the more we can help you. Take a look at this post.
Search for the answer
Before asking a question, check Godot Docs and use the Forum Search functionality to make sure your question hasn’t been answered or there isn’t an ongoing discussion on that topic already.
If you don’t know where to start, try here: Getting started , Your first 2D game , Your first 3D game .
Create a good post
Click on each point to expand.
1. Write a good topic title
2. Use the template
3. Format your code
Describe your problem
Explain the problem you’re having in deta…
We cannot read your mind.
What do you mean by this? Be specific and describe what happens.
Can you show the code you used? What node did you attach it to? Can you post a screenshot of your scene tree?
mrcdk
June 3, 2026, 6:28am
5
It’s not possible as it’s hard-coded into the control:
Control::CursorShape RichTextLabel::get_cursor_shape(const Point2 &p_pos) const {
if (selection.click_item) {
return CURSOR_IBEAM;
}
Item *item = nullptr;
bool outside = true;
const_cast<RichTextLabel *>(this)->_find_click(main, p_pos, nullptr, nullptr, &item, nullptr, &outside, true);
if (item && !outside && const_cast<RichTextLabel *>(this)->_find_meta(item, nullptr)) {
return CURSOR_POINTING_HAND;
}
return get_default_cursor_shape();
}
In Godot 4.7 there’s Control._get_cursor_shape() but this only works for custom controls and not built-in ones.
You can open an issue in the issue tracker if there isn’t an opened issue yet about this.
That’s how the original code logic is implemented. It’s a pity that the mouse cursor can’t be customized, but for now we’ll have to leave it as it is.
You can hide it and implement your own.