-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemp.txt
More file actions
66 lines (59 loc) · 4.7 KB
/
temp.txt
File metadata and controls
66 lines (59 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
void EditorNode::_vector_ai_panel_input(const Ref<InputEvent> &p_event) {
// Handle mouse button events (for dragging and resizing)
const Ref<InputEventMouseButton> mb = p_event;
if (mb.is_valid()) {
if (mb->get_button_index() == MouseButton::LEFT) {
if (mb->is_pressed()) {
Vector2 mpos = mb->get_position();
Size2 panel_size = vector_ai_panel->get_size();
// Check if we're clicking in the header area (for dragging)
if (mpos.y <= 30 * EDSCALE) {
vector_ai_dragging = true;
vector_ai_drag_from = mpos;
}
// Check if we're clicking in the resize handle area
else if (mpos.x > panel_size.x - 20 * EDSCALE && mpos.y > panel_size.y - 20 * EDSCALE) {
vector_ai_resizing = true;
vector_ai_resize_from = mpos;
vector_ai_resize_from_size = panel_size;
}
} else { // Released
vector_ai_dragging = false;
vector_ai_resizing = false;
}
}
}
// Handle mouse motion events (for cursor changes, dragging and resizing)
const Ref<InputEventMouseMotion> mm = p_event;
if (mm.is_valid()) {
Vector2 mpos = mm->get_position();
Size2 panel_size = vector_ai_panel->get_size();
// Update cursor shape based on mouse position
if (mpos.x > panel_size.x - 20 * EDSCALE && mpos.y > panel_size.y - 20 * EDSCALE) {
// Show resize cursor in bottom-right corner
vector_ai_panel->set_default_cursor_shape(Control::CURSOR_FDIAGSIZE);
} else if (mpos.y <= 30 * EDSCALE) {
// Show move cursor in header area
vector_ai_panel->set_default_cursor_shape(Control::CURSOR_MOVE);
} else {
// Default cursor elsewhere
vector_ai_panel->set_default_cursor_shape(Control::CURSOR_ARROW);
}
if (vector_ai_resizing) {
// Resize the panel
Vector2 resize_to = mm->get_position();
Vector2 resize_delta = resize_to - vector_ai_resize_from;
Size2 new_size = vector_ai_resize_from_size + resize_delta;
// Enforce minimum size
new_size.x = MAX(new_size.x, 300 * EDSCALE);
new_size.y = MAX(new_size.y, 200 * EDSCALE);
vector_ai_panel->set_size(new_size);
} else if (vector_ai_dragging) {
// Move the panel while dragging
Vector2 drag_to = mm->get_position();
Vector2 drag_delta = drag_to - vector_ai_drag_from;
vector_ai_panel->set_position(vector_ai_panel->get_position() + drag_delta);
vector_ai_drag_from = drag_to;
}
}
}