@@ -2476,7 +2476,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
2476
2476
}
2477
2477
}
2478
2478
2479
- if (b.is_valid () && b->is_pressed () && b->get_button_index () == MouseButton::RIGHT) {
2479
+ if (b.is_valid () && b->is_pressed () && b->get_button_index () == MouseButton::RIGHT && tool != TOOL_SCENE_PAINT ) {
2480
2480
add_node_menu->clear ();
2481
2481
add_node_menu->add_icon_item (get_editor_theme_icon (SNAME (" Add" )), TTRC (" Add Node Here..." ), ADD_NODE);
2482
2482
add_node_menu->add_icon_item (get_editor_theme_icon (SNAME (" Instance" )), TTRC (" Instantiate Scene Here..." ), ADD_INSTANCE);
@@ -4095,6 +4095,10 @@ void CanvasItemEditor::_draw_viewport() {
4095
4095
_draw_message ();
4096
4096
}
4097
4097
4098
+ void CanvasItemEditor::get_canvas_items_at_pos (const Point2 &p_pos, Vector<_SelectResult> &r_items, bool p_allow_locked) {
4099
+ _get_canvas_items_at_pos (p_pos, r_items, p_allow_locked);
4100
+ }
4101
+
4098
4102
void CanvasItemEditor::update_viewport () {
4099
4103
_update_scrollbars ();
4100
4104
viewport->queue_redraw ();
@@ -4107,6 +4111,7 @@ void CanvasItemEditor::set_current_tool(Tool p_tool) {
4107
4111
void CanvasItemEditor::_update_editor_settings () {
4108
4112
button_center_view->set_button_icon (get_editor_theme_icon (SNAME (" CenterView" )));
4109
4113
select_button->set_button_icon (get_editor_theme_icon (SNAME (" ToolSelect" )));
4114
+ scene_paint_button->set_button_icon (get_editor_theme_icon (SNAME (" Paint" )));
4110
4115
select_sb->set_texture (get_editor_theme_icon (SNAME (" EditorRect2D" )));
4111
4116
list_select_button->set_button_icon (get_editor_theme_icon (SNAME (" ListSelect" )));
4112
4117
move_button->set_button_icon (get_editor_theme_icon (SNAME (" ToolMove" )));
@@ -4432,7 +4437,7 @@ void CanvasItemEditor::_button_toggle_grid_snap(bool p_status) {
4432
4437
}
4433
4438
4434
4439
void CanvasItemEditor::_button_tool_select (int p_index) {
4435
- Button *tb[TOOL_MAX] = { select_button, list_select_button, move_button, scale_button, rotate_button, pivot_button, pan_button, ruler_button };
4440
+ Button *tb[TOOL_MAX] = { select_button, scene_paint_button, list_select_button, move_button, scale_button, rotate_button, pivot_button, pan_button, ruler_button };
4436
4441
for (int i = 0 ; i < TOOL_MAX; i++) {
4437
4442
tb[i]->set_pressed (i == p_index);
4438
4443
}
@@ -4453,6 +4458,7 @@ void CanvasItemEditor::_button_tool_select(int p_index) {
4453
4458
4454
4459
viewport->queue_redraw ();
4455
4460
_update_cursor ();
4461
+ emit_signal (" canvas_item_tool_changed" , tool);
4456
4462
}
4457
4463
4458
4464
void CanvasItemEditor::_insert_animation_keys (bool p_location, bool p_rotation, bool p_scale, bool p_on_existing) {
@@ -4989,6 +4995,7 @@ void CanvasItemEditor::_bind_methods() {
4989
4995
4990
4996
ADD_SIGNAL (MethodInfo (" item_lock_status_changed" ));
4991
4997
ADD_SIGNAL (MethodInfo (" item_group_status_changed" ));
4998
+ ADD_SIGNAL (MethodInfo (" canvas_item_tool_changed" , PropertyInfo (Variant::INT, " tool" )));
4992
4999
}
4993
5000
4994
5001
Dictionary CanvasItemEditor::get_state () const {
@@ -5463,6 +5470,15 @@ CanvasItemEditor::CanvasItemEditor() {
5463
5470
select_button->set_shortcut_context (this );
5464
5471
select_button->set_accessibility_name (TTRC (" Select Mode" ));
5465
5472
5473
+ scene_paint_button = memnew (Button);
5474
+ scene_paint_button->set_theme_type_variation (SceneStringName (FlatButton));
5475
+ main_menu_hbox->add_child (scene_paint_button);
5476
+ scene_paint_button->set_toggle_mode (true );
5477
+ scene_paint_button->connect (SceneStringName (pressed), callable_mp (this , &CanvasItemEditor::_button_tool_select).bind (TOOL_SCENE_PAINT));
5478
+ scene_paint_button->set_shortcut (ED_SHORTCUT (" canvas_item_editor/scene_paint_mode" , TTRC (" Scene Paint Mode" ), Key::B, true ));
5479
+ scene_paint_button->set_shortcut_context (this );
5480
+ scene_paint_button->set_accessibility_name (TTRC (" Scene Paint Mode" ));
5481
+
5466
5482
main_menu_hbox->add_child (memnew (VSeparator));
5467
5483
5468
5484
move_button = memnew (Button);
0 commit comments