1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-22 15:06:45 +00:00

Merge pull request #101546 from bruvzg/portal_color_picker

[Linux] Implement native color picker.
This commit is contained in:
Thaddeus Crews
2025-03-17 10:52:29 -05:00
11 changed files with 348 additions and 51 deletions

View File

@@ -156,6 +156,9 @@ bool DisplayServerX11::has_feature(Feature p_feature) const {
case FEATURE_NATIVE_DIALOG_FILE_MIME: {
return (portal_desktop && portal_desktop->is_supported() && portal_desktop->is_file_chooser_supported());
} break;
case FEATURE_NATIVE_COLOR_PICKER: {
return (portal_desktop && portal_desktop->is_supported() && portal_desktop->is_screenshot_supported());
} break;
#endif
case FEATURE_SCREEN_CAPTURE: {
return !xwayland;
@@ -3508,6 +3511,17 @@ Key DisplayServerX11::keyboard_get_label_from_physical(Key p_keycode) const {
return (Key)(key | modifiers);
}
bool DisplayServerX11::color_picker(const Callable &p_callback) {
WindowID window_id = last_focused_window;
if (!windows.has(window_id)) {
window_id = MAIN_WINDOW_ID;
}
String xid = vformat("x11:%x", (uint64_t)windows[window_id].x11_window);
return portal_desktop->color_picker(xid, p_callback);
}
DisplayServerX11::Property DisplayServerX11::_read_property(Display *p_display, Window p_window, Atom p_property) {
Atom actual_type = None;
int actual_format = 0;
@@ -5397,7 +5411,7 @@ void DisplayServerX11::process_events() {
#ifdef DBUS_ENABLED
if (portal_desktop) {
portal_desktop->process_file_dialog_callbacks();
portal_desktop->process_callbacks();
}
#endif