You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-23 15:16:17 +00:00
Enable Drag and Drop for SubViewports and Windows
Make Drag and Drop an application-wide operation. This allows do drop on Controls in other Viewports/Windows. In order to achieve this, `Viewport::_update_mouse_over` is adjusted to remember the Control, that the mouse is over (possibly within nested viewports). This Control is used as a basis for the Drop-operation, which replaces the previous algorithm, which was only aware of the topmost Viewport. Also now all nodes in the SceneTree are notified about the Drag and Drop operation, with the exception of SubViewports that are not children of SubViewportContainers.
This commit is contained in:
@@ -1787,12 +1787,6 @@ void DisplayServerX11::delete_sub_window(WindowID p_id) {
|
||||
_send_window_event(windows[p_id], WINDOW_EVENT_MOUSE_EXIT);
|
||||
}
|
||||
|
||||
window_set_rect_changed_callback(Callable(), p_id);
|
||||
window_set_window_event_callback(Callable(), p_id);
|
||||
window_set_input_event_callback(Callable(), p_id);
|
||||
window_set_input_text_callback(Callable(), p_id);
|
||||
window_set_drop_files_callback(Callable(), p_id);
|
||||
|
||||
while (wd.transient_children.size()) {
|
||||
window_set_transient(*wd.transient_children.begin(), INVALID_WINDOW_ID);
|
||||
}
|
||||
@@ -1836,6 +1830,12 @@ void DisplayServerX11::delete_sub_window(WindowID p_id) {
|
||||
XUnmapWindow(x11_display, wd.x11_window);
|
||||
XDestroyWindow(x11_display, wd.x11_window);
|
||||
|
||||
window_set_rect_changed_callback(Callable(), p_id);
|
||||
window_set_window_event_callback(Callable(), p_id);
|
||||
window_set_input_event_callback(Callable(), p_id);
|
||||
window_set_input_text_callback(Callable(), p_id);
|
||||
window_set_drop_files_callback(Callable(), p_id);
|
||||
|
||||
windows.erase(p_id);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user