[DisplayServer] Add error messages and descriptions to callbacks.
This commit is contained in:
parent
be56cab58c
commit
714effdf07
|
@ -63,6 +63,7 @@
|
||||||
<param index="2" name="callback" type="Callable" />
|
<param index="2" name="callback" type="Callable" />
|
||||||
<description>
|
<description>
|
||||||
Creates a new application status indicator with the specified icon, tooltip, and activation callback.
|
Creates a new application status indicator with the specified icon, tooltip, and activation callback.
|
||||||
|
[param callback] should take two arguments: the pressed mouse button (one of the [enum MouseButton] constants) and the click position in screen coordinates (a [Vector2i]).
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="cursor_get_shape" qualifiers="const">
|
<method name="cursor_get_shape" qualifiers="const">
|
||||||
|
@ -875,7 +876,7 @@
|
||||||
<param index="1" name="open_callback" type="Callable" />
|
<param index="1" name="open_callback" type="Callable" />
|
||||||
<param index="2" name="close_callback" type="Callable" />
|
<param index="2" name="close_callback" type="Callable" />
|
||||||
<description>
|
<description>
|
||||||
Registers callables to emit when the menu is respectively about to show or closed.
|
Registers callables to emit when the menu is respectively about to show or closed. Callback methods should have zero arguments.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="has_feature" qualifiers="const">
|
<method name="has_feature" qualifiers="const">
|
||||||
|
@ -1187,7 +1188,7 @@
|
||||||
<param index="0" name="id" type="int" />
|
<param index="0" name="id" type="int" />
|
||||||
<param index="1" name="callback" type="Callable" />
|
<param index="1" name="callback" type="Callable" />
|
||||||
<description>
|
<description>
|
||||||
Sets the application status indicator activation callback.
|
Sets the application status indicator activation callback. [param callback] should take two arguments: [int] mouse button index (one of [enum MouseButton] values) and [Vector2i] click position in screen coordinates.
|
||||||
[b]Note:[/b] This method is implemented on macOS and Windows.
|
[b]Note:[/b] This method is implemented on macOS and Windows.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
@ -1568,7 +1569,7 @@
|
||||||
<param index="0" name="callback" type="Callable" />
|
<param index="0" name="callback" type="Callable" />
|
||||||
<param index="1" name="window_id" type="int" default="0" />
|
<param index="1" name="window_id" type="int" default="0" />
|
||||||
<description>
|
<description>
|
||||||
Sets the [param callback] that should be called when files are dropped from the operating system's file manager to the window specified by [param window_id].
|
Sets the [param callback] that should be called when files are dropped from the operating system's file manager to the window specified by [param window_id]. [param callback] should take one [PackedStringArray] argument, which is the list of dropped files.
|
||||||
[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] node will override its default implementation, which can introduce bugs.
|
[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] node will override its default implementation, which can introduce bugs.
|
||||||
[b]Note:[/b] This method is implemented on Windows, macOS, Linux (X11/Wayland), and Web.
|
[b]Note:[/b] This method is implemented on Windows, macOS, Linux (X11/Wayland), and Web.
|
||||||
</description>
|
</description>
|
||||||
|
|
|
@ -671,7 +671,7 @@ void EditorNode::_notification(int p_what) {
|
||||||
|
|
||||||
callable_mp(this, &EditorNode::_begin_first_scan).call_deferred();
|
callable_mp(this, &EditorNode::_begin_first_scan).call_deferred();
|
||||||
|
|
||||||
DisplayServer::get_singleton()->set_system_theme_change_callback(callable_mp(this, &EditorNode::_update_theme));
|
DisplayServer::get_singleton()->set_system_theme_change_callback(callable_mp(this, &EditorNode::_update_theme).bind(false));
|
||||||
|
|
||||||
/* DO NOT LOAD SCENES HERE, WAIT FOR FILE SCANNING AND REIMPORT TO COMPLETE */
|
/* DO NOT LOAD SCENES HERE, WAIT FOR FILE SCANNING AND REIMPORT TO COMPLETE */
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -399,7 +399,12 @@ void DisplayServerIOS::set_system_theme_change_callback(const Callable &p_callab
|
||||||
|
|
||||||
void DisplayServerIOS::emit_system_theme_changed() {
|
void DisplayServerIOS::emit_system_theme_changed() {
|
||||||
if (system_theme_changed.is_valid()) {
|
if (system_theme_changed.is_valid()) {
|
||||||
system_theme_changed.call();
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
system_theme_changed.callp(nullptr, 0, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute system theme changed callback: %s.", Variant::get_callable_error_text(system_theme_changed, nullptr, 0, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -597,7 +597,12 @@ void FreeDesktopPortalDesktop::_thread_monitor(void *p_ud) {
|
||||||
|
|
||||||
void FreeDesktopPortalDesktop::_system_theme_changed_callback() {
|
void FreeDesktopPortalDesktop::_system_theme_changed_callback() {
|
||||||
if (system_theme_changed.is_valid()) {
|
if (system_theme_changed.is_valid()) {
|
||||||
system_theme_changed.call();
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
system_theme_changed.callp(nullptr, 0, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute system theme changed callback: %s.", Variant::get_callable_error_text(system_theme_changed, nullptr, 0, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1137,7 +1137,14 @@ void DisplayServerWayland::process_events() {
|
||||||
WindowData wd = main_window;
|
WindowData wd = main_window;
|
||||||
|
|
||||||
if (wd.drop_files_callback.is_valid()) {
|
if (wd.drop_files_callback.is_valid()) {
|
||||||
wd.drop_files_callback.call(dropfiles_msg->files);
|
Variant v_files = dropfiles_msg->files;
|
||||||
|
const Variant *v_args[1] = { &v_files };
|
||||||
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
wd.drop_files_callback.callp((const Variant **)&v_args, 1, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute drop files callback: %s.", Variant::get_callable_error_text(wd.drop_files_callback, v_args, 1, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5008,7 +5008,14 @@ void DisplayServerX11::process_events() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (windows[window_id].drop_files_callback.is_valid()) {
|
if (windows[window_id].drop_files_callback.is_valid()) {
|
||||||
windows[window_id].drop_files_callback.call(files);
|
Variant v_files = files;
|
||||||
|
const Variant *v_args[1] = { &v_files };
|
||||||
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
windows[window_id].drop_files_callback.callp((const Variant **)&v_args, 1, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute drop files callback: %s.", Variant::get_callable_error_text(windows[window_id].drop_files_callback, v_args, 1, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reply that all is well.
|
//Reply that all is well.
|
||||||
|
|
|
@ -907,7 +907,12 @@ void DisplayServerMacOS::set_system_theme_change_callback(const Callable &p_call
|
||||||
|
|
||||||
void DisplayServerMacOS::emit_system_theme_changed() {
|
void DisplayServerMacOS::emit_system_theme_changed() {
|
||||||
if (system_theme_changed.is_valid()) {
|
if (system_theme_changed.is_valid()) {
|
||||||
system_theme_changed.call();
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
system_theme_changed.callp(nullptr, 0, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute system theme changed callback: %s.", Variant::get_callable_error_text(system_theme_changed, nullptr, 0, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -323,7 +323,14 @@
|
||||||
NSString *file = [NSURL URLWithString:url].path;
|
NSString *file = [NSURL URLWithString:url].path;
|
||||||
files.push_back(String::utf8([file UTF8String]));
|
files.push_back(String::utf8([file UTF8String]));
|
||||||
}
|
}
|
||||||
wd.drop_files_callback.call(files);
|
Variant v_files = files;
|
||||||
|
const Variant *v_args[1] = { &v_files };
|
||||||
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
wd.drop_files_callback.callp((const Variant **)&v_args, 1, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute drop files callback: %s.", Variant::get_callable_error_text(wd.drop_files_callback, v_args, 1, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
|
|
|
@ -66,10 +66,13 @@
|
||||||
if (cb.is_valid()) {
|
if (cb.is_valid()) {
|
||||||
Variant v_button = index;
|
Variant v_button = index;
|
||||||
Variant v_pos = ds->mouse_get_position();
|
Variant v_pos = ds->mouse_get_position();
|
||||||
Variant *v_args[2] = { &v_button, &v_pos };
|
const Variant *v_args[2] = { &v_button, &v_pos };
|
||||||
Variant ret;
|
Variant ret;
|
||||||
Callable::CallError ce;
|
Callable::CallError ce;
|
||||||
cb.callp((const Variant **)&v_args, 2, ret, ce);
|
cb.callp((const Variant **)&v_args, 2, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute status indicator callback: %s.", Variant::get_callable_error_text(cb, v_args, 2, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,14 @@ void DisplayServerWeb::_drop_files_js_callback(const Vector<String> &p_files) {
|
||||||
if (!ds->drop_files_callback.is_valid()) {
|
if (!ds->drop_files_callback.is_valid()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ds->drop_files_callback.call(p_files);
|
Variant v_files = p_files;
|
||||||
|
const Variant *v_args[1] = { &v_files };
|
||||||
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
ds->drop_files_callback.callp((const Variant **)&v_args, 1, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute drop files callback: %s.", Variant::get_callable_error_text(ds->drop_files_callback, v_args, 1, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Web quit request callback.
|
// Web quit request callback.
|
||||||
|
|
|
@ -3842,7 +3842,12 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (system_theme_changed.is_valid()) {
|
if (system_theme_changed.is_valid()) {
|
||||||
system_theme_changed.call();
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
system_theme_changed.callp(nullptr, 0, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute system theme changed callback: %s.", Variant::get_callable_error_text(system_theme_changed, nullptr, 0, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case WM_THEMECHANGED: {
|
case WM_THEMECHANGED: {
|
||||||
|
@ -3897,10 +3902,13 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
} else if (indicators[iid].callback.is_valid()) {
|
} else if (indicators[iid].callback.is_valid()) {
|
||||||
Variant v_button = mb;
|
Variant v_button = mb;
|
||||||
Variant v_pos = mouse_get_position();
|
Variant v_pos = mouse_get_position();
|
||||||
Variant *v_args[2] = { &v_button, &v_pos };
|
const Variant *v_args[2] = { &v_button, &v_pos };
|
||||||
Variant ret;
|
Variant ret;
|
||||||
Callable::CallError ce;
|
Callable::CallError ce;
|
||||||
indicators[iid].callback.callp((const Variant **)&v_args, 2, ret, ce);
|
indicators[iid].callback.callp((const Variant **)&v_args, 2, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute status indicator callback: %s.", Variant::get_callable_error_text(indicators[iid].callback, v_args, 2, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -4868,7 +4876,14 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
}
|
}
|
||||||
|
|
||||||
if (files.size() && windows[window_id].drop_files_callback.is_valid()) {
|
if (files.size() && windows[window_id].drop_files_callback.is_valid()) {
|
||||||
windows[window_id].drop_files_callback.call(files);
|
Variant v_files = files;
|
||||||
|
const Variant *v_args[1] = { &v_files };
|
||||||
|
Variant ret;
|
||||||
|
Callable::CallError ce;
|
||||||
|
windows[window_id].drop_files_callback.callp((const Variant **)&v_args, 1, ret, ce);
|
||||||
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
|
ERR_PRINT(vformat("Failed to execute drop files callback: %s.", Variant::get_callable_error_text(windows[window_id].drop_files_callback, v_args, 1, ce)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
default: {
|
default: {
|
||||||
|
|
Loading…
Reference in New Issue