mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Always update Viewport's last_mosue_position
When the mouse cursor is over a embedded Window, the Viewport's last_mouse_position did not get updated. This patch makes sure that the update happens on every InputEventMouse. Document canvas layer of embedded Windows.
This commit is contained in:
parent
cbdd9f3bbf
commit
b1d6b34662
@ -5,6 +5,7 @@
|
||||
</brief_description>
|
||||
<description>
|
||||
Canvas drawing layer. [CanvasItem] nodes that are direct or indirect children of a [CanvasLayer] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below).
|
||||
Embedded [Window]s are placed in layer 1024. CanvasItems in layer 1025 or above appear in front of embedded windows, CanvasItems in layer 1023 or below appear behind embedded windows.
|
||||
</description>
|
||||
<tutorials>
|
||||
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
|
||||
|
@ -1490,7 +1490,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
|
||||
gui.key_event_accepted = false;
|
||||
|
||||
Point2 mpos = mb->get_position();
|
||||
gui.last_mouse_pos = mpos;
|
||||
if (mb->is_pressed()) {
|
||||
Size2 pos = mpos;
|
||||
if (gui.mouse_focus_mask != MouseButton::NONE) {
|
||||
@ -1644,8 +1643,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
|
||||
gui.key_event_accepted = false;
|
||||
Point2 mpos = mm->get_position();
|
||||
|
||||
gui.last_mouse_pos = mpos;
|
||||
|
||||
// Drag & drop.
|
||||
if (!gui.drag_attempted && gui.mouse_focus && (mm->get_button_mask() & MouseButton::MASK_LEFT) != MouseButton::NONE) {
|
||||
gui.drag_accum += mm->get_relative();
|
||||
@ -2759,6 +2756,11 @@ void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
|
||||
ev = p_event;
|
||||
}
|
||||
|
||||
Ref<InputEventMouse> me = ev;
|
||||
if (me.is_valid()) {
|
||||
gui.last_mouse_pos = me->get_position();
|
||||
}
|
||||
|
||||
if (is_embedding_subwindows() && _sub_windows_forward_input(ev)) {
|
||||
set_input_as_handled();
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user