Merge pull request #59720 from Vitika9/itemlist-signals
This commit is contained in:
commit
61517b6d39
13 changed files with 101 additions and 84 deletions
|
@ -407,19 +407,26 @@
|
|||
</member>
|
||||
</members>
|
||||
<signals>
|
||||
<signal name="empty_clicked">
|
||||
<argument index="0" name="at_position" type="Vector2" />
|
||||
<argument index="1" name="mouse_button_index" type="int" />
|
||||
<description>
|
||||
Triggered when any mouse click is issued within the rect of the list but on empty space.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="item_activated">
|
||||
<argument index="0" name="index" type="int" />
|
||||
<description>
|
||||
Triggered when specified list item is activated via double-clicking or by pressing [kbd]Enter[/kbd].
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="item_rmb_selected">
|
||||
<signal name="item_clicked">
|
||||
<argument index="0" name="index" type="int" />
|
||||
<argument index="1" name="at_position" type="Vector2" />
|
||||
<argument index="2" name="mouse_button_index" type="int" />
|
||||
<description>
|
||||
Triggered when specified list item has been selected via right mouse clicking.
|
||||
Triggered when specified list item has been clicked with any mouse button.
|
||||
The click position is also provided to allow appropriate popup of context menus at the correct location.
|
||||
[member allow_rmb_select] must be enabled.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="item_selected">
|
||||
|
@ -436,18 +443,6 @@
|
|||
Triggered when a multiple selection is altered on a list allowing multiple selection.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="nothing_selected">
|
||||
<description>
|
||||
Triggered when a left mouse click is issued within the rect of the list but on empty space.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="rmb_clicked">
|
||||
<argument index="0" name="at_position" type="Vector2" />
|
||||
<description>
|
||||
Triggered when a right mouse click is issued within the rect of the list but on empty space.
|
||||
[member allow_rmb_select] must be enabled.
|
||||
</description>
|
||||
</signal>
|
||||
</signals>
|
||||
<constants>
|
||||
<constant name="ICON_MODE_TOP" value="0" enum="IconMode">
|
||||
|
|
|
@ -271,7 +271,11 @@ DependencyEditor::DependencyEditor() {
|
|||
}
|
||||
|
||||
/////////////////////////////////////
|
||||
void DependencyEditorOwners::_list_rmb_select(int p_item, const Vector2 &p_pos) {
|
||||
void DependencyEditorOwners::_list_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::RIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
file_options->clear();
|
||||
file_options->reset_size();
|
||||
if (p_item >= 0) {
|
||||
|
@ -352,7 +356,7 @@ DependencyEditorOwners::DependencyEditorOwners() {
|
|||
|
||||
owners = memnew(ItemList);
|
||||
owners->set_select_mode(ItemList::SELECT_SINGLE);
|
||||
owners->connect("item_rmb_selected", callable_mp(this, &DependencyEditorOwners::_list_rmb_select));
|
||||
owners->connect("item_clicked", callable_mp(this, &DependencyEditorOwners::_list_rmb_clicked));
|
||||
owners->connect("item_activated", callable_mp(this, &DependencyEditorOwners::_select_file));
|
||||
owners->set_allow_rmb_select(true);
|
||||
add_child(owners);
|
||||
|
|
|
@ -78,7 +78,7 @@ class DependencyEditorOwners : public AcceptDialog {
|
|||
void _fill_owners(EditorFileSystemDirectory *efsd);
|
||||
|
||||
static void _bind_methods();
|
||||
void _list_rmb_select(int p_item, const Vector2 &p_pos);
|
||||
void _list_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
void _select_file(int p_idx);
|
||||
void _file_option(int p_option);
|
||||
|
||||
|
|
|
@ -529,7 +529,11 @@ void EditorFileDialog::_multi_selected(int p_item, bool p_selected) {
|
|||
get_ok_button()->set_disabled(_is_open_should_be_disabled());
|
||||
}
|
||||
|
||||
void EditorFileDialog::_items_clear_selection() {
|
||||
void EditorFileDialog::_items_clear_selection(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::LEFT) {
|
||||
return;
|
||||
}
|
||||
|
||||
item_list->deselect_all();
|
||||
|
||||
// If nothing is selected, then block Open button.
|
||||
|
@ -583,7 +587,11 @@ void EditorFileDialog::_item_dc_selected(int p_item) {
|
|||
}
|
||||
}
|
||||
|
||||
void EditorFileDialog::_item_list_item_rmb_selected(int p_item, const Vector2 &p_pos) {
|
||||
void EditorFileDialog::_item_list_item_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::RIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Right click on specific file(s) or folder(s).
|
||||
item_menu->clear();
|
||||
item_menu->reset_size();
|
||||
|
@ -624,12 +632,20 @@ void EditorFileDialog::_item_list_item_rmb_selected(int p_item, const Vector2 &p
|
|||
}
|
||||
}
|
||||
|
||||
void EditorFileDialog::_item_list_rmb_clicked(const Vector2 &p_pos) {
|
||||
// Right click on folder background. Deselect all files so that actions are applied on the current folder.
|
||||
void EditorFileDialog::_item_list_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::RIGHT && p_mouse_button_index != MouseButton::LEFT) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Left or right click on folder background. Deselect all files so that actions are applied on the current folder.
|
||||
for (int i = 0; i < item_list->get_item_count(); i++) {
|
||||
item_list->deselect(i);
|
||||
}
|
||||
|
||||
if (p_mouse_button_index != MouseButton::RIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
item_menu->clear();
|
||||
item_menu->reset_size();
|
||||
|
||||
|
@ -1753,8 +1769,8 @@ EditorFileDialog::EditorFileDialog() {
|
|||
|
||||
item_list = memnew(ItemList);
|
||||
item_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
item_list->connect("item_rmb_selected", callable_mp(this, &EditorFileDialog::_item_list_item_rmb_selected));
|
||||
item_list->connect("rmb_clicked", callable_mp(this, &EditorFileDialog::_item_list_rmb_clicked));
|
||||
item_list->connect("item_clicked", callable_mp(this, &EditorFileDialog::_item_list_item_rmb_clicked));
|
||||
item_list->connect("empty_clicked", callable_mp(this, &EditorFileDialog::_item_list_empty_clicked));
|
||||
item_list->set_allow_rmb_select(true);
|
||||
|
||||
list_vb->add_child(item_list);
|
||||
|
@ -1799,7 +1815,7 @@ EditorFileDialog::EditorFileDialog() {
|
|||
item_list->connect("item_selected", callable_mp(this, &EditorFileDialog::_item_selected), varray(), CONNECT_DEFERRED);
|
||||
item_list->connect("multi_selected", callable_mp(this, &EditorFileDialog::_multi_selected), varray(), CONNECT_DEFERRED);
|
||||
item_list->connect("item_activated", callable_mp(this, &EditorFileDialog::_item_dc_selected), varray());
|
||||
item_list->connect("nothing_selected", callable_mp(this, &EditorFileDialog::_items_clear_selection));
|
||||
item_list->connect("empty_clicked", callable_mp(this, &EditorFileDialog::_items_clear_selection));
|
||||
dir->connect("text_submitted", callable_mp(this, &EditorFileDialog::_dir_submitted));
|
||||
file->connect("text_submitted", callable_mp(this, &EditorFileDialog::_file_submitted));
|
||||
filter->connect("item_selected", callable_mp(this, &EditorFileDialog::_filter_selected));
|
||||
|
|
|
@ -165,11 +165,11 @@ private:
|
|||
|
||||
void _item_selected(int p_item);
|
||||
void _multi_selected(int p_item, bool p_selected);
|
||||
void _items_clear_selection();
|
||||
void _items_clear_selection(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
void _item_dc_selected(int p_item);
|
||||
|
||||
void _item_list_item_rmb_selected(int p_item, const Vector2 &p_pos);
|
||||
void _item_list_rmb_clicked(const Vector2 &p_pos);
|
||||
void _item_list_item_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
void _item_list_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
void _item_menu_id_pressed(int p_option);
|
||||
|
||||
void _select_drive(int p_idx);
|
||||
|
|
|
@ -2637,7 +2637,11 @@ void FileSystemDock::_tree_empty_selected() {
|
|||
tree->deselect_all();
|
||||
}
|
||||
|
||||
void FileSystemDock::_file_list_rmb_select(int p_item, const Vector2 &p_pos) {
|
||||
void FileSystemDock::_file_list_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::RIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Right click is pressed in the file list.
|
||||
Vector<String> paths;
|
||||
for (int i = 0; i < files->get_item_count(); i++) {
|
||||
|
@ -3128,7 +3132,7 @@ FileSystemDock::FileSystemDock() {
|
|||
files->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
files->set_select_mode(ItemList::SELECT_MULTI);
|
||||
files->set_drag_forwarding(this);
|
||||
files->connect("item_rmb_selected", callable_mp(this, &FileSystemDock::_file_list_rmb_select));
|
||||
files->connect("item_clicked", callable_mp(this, &FileSystemDock::_file_list_rmb_clicked));
|
||||
files->connect("gui_input", callable_mp(this, &FileSystemDock::_file_list_gui_input));
|
||||
files->connect("multi_selected", callable_mp(this, &FileSystemDock::_file_multi_selected));
|
||||
files->connect("rmb_clicked", callable_mp(this, &FileSystemDock::_file_list_rmb_pressed));
|
||||
|
|
|
@ -260,7 +260,7 @@ private:
|
|||
void _file_and_folders_fill_popup(PopupMenu *p_popup, Vector<String> p_paths, bool p_display_path_dependent_options = true);
|
||||
void _tree_rmb_select(const Vector2 &p_pos);
|
||||
void _tree_rmb_empty(const Vector2 &p_pos);
|
||||
void _file_list_rmb_select(int p_item, const Vector2 &p_pos);
|
||||
void _file_list_rmb_clicked(int p_item, const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
void _file_list_rmb_pressed(const Vector2 &p_pos);
|
||||
void _tree_empty_selected();
|
||||
|
||||
|
|
|
@ -443,7 +443,11 @@ void TileMapEditorTilesPlugin::_scenes_list_multi_selected(int p_index, bool p_s
|
|||
_update_selection_pattern_from_tileset_tiles_selection();
|
||||
}
|
||||
|
||||
void TileMapEditorTilesPlugin::_scenes_list_nothing_selected() {
|
||||
void TileMapEditorTilesPlugin::_scenes_list_lmb_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::LEFT) {
|
||||
return;
|
||||
}
|
||||
|
||||
scene_tiles_list->deselect_all();
|
||||
tile_set_selection.clear();
|
||||
tile_map_selection.clear();
|
||||
|
@ -1508,6 +1512,11 @@ void TileMapEditorTilesPlugin::_fix_invalid_tiles_in_tile_map_selection() {
|
|||
tile_map_selection.erase(cell);
|
||||
}
|
||||
}
|
||||
void TileMapEditorTilesPlugin::patterns_item_list_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index == MouseButton::LEFT) {
|
||||
_update_selection_pattern_from_tileset_pattern_selection();
|
||||
}
|
||||
}
|
||||
|
||||
void TileMapEditorTilesPlugin::_update_selection_pattern_from_tilemap_selection() {
|
||||
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
|
||||
|
@ -2221,7 +2230,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|||
scene_tiles_list->set_drag_forwarding(this);
|
||||
scene_tiles_list->set_select_mode(ItemList::SELECT_MULTI);
|
||||
scene_tiles_list->connect("multi_selected", callable_mp(this, &TileMapEditorTilesPlugin::_scenes_list_multi_selected));
|
||||
scene_tiles_list->connect("nothing_selected", callable_mp(this, &TileMapEditorTilesPlugin::_scenes_list_nothing_selected));
|
||||
scene_tiles_list->connect("empty_clicked", callable_mp(this, &TileMapEditorTilesPlugin::_scenes_list_lmb_empty_clicked));
|
||||
scene_tiles_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
|
||||
atlas_sources_split_container->add_child(scene_tiles_list);
|
||||
|
||||
|
@ -2251,7 +2260,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|||
patterns_item_list->connect("gui_input", callable_mp(this, &TileMapEditorTilesPlugin::_patterns_item_list_gui_input));
|
||||
patterns_item_list->connect("item_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection).unbind(1));
|
||||
patterns_item_list->connect("item_activated", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection));
|
||||
patterns_item_list->connect("nothing_selected", callable_mp(this, &TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_pattern_selection));
|
||||
patterns_item_list->connect("empty_clicked", callable_mp(this, &TileMapEditorTilesPlugin::patterns_item_list_empty_clicked));
|
||||
patterns_bottom_panel->add_child(patterns_item_list);
|
||||
|
||||
patterns_help_label = memnew(Label);
|
||||
|
|
|
@ -144,6 +144,8 @@ private:
|
|||
void _update_fix_selected_and_hovered();
|
||||
void _fix_invalid_tiles_in_tile_map_selection();
|
||||
|
||||
void patterns_item_list_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
|
||||
///// Bottom panel common ////
|
||||
void _tab_changed();
|
||||
|
||||
|
@ -187,7 +189,7 @@ private:
|
|||
void _update_scenes_collection_view();
|
||||
void _scene_thumbnail_done(const String &p_path, const Ref<Texture2D> &p_preview, const Ref<Texture2D> &p_small_preview, Variant p_ud);
|
||||
void _scenes_list_multi_selected(int p_index, bool p_selected);
|
||||
void _scenes_list_nothing_selected();
|
||||
void _scenes_list_lmb_empty_clicked(const Vector2 &p_pos, MouseButton p_mouse_button_index);
|
||||
|
||||
///// Bottom panel patterns ////
|
||||
VBoxContainer *patterns_bottom_panel = nullptr;
|
||||
|
|
|
@ -33,7 +33,11 @@
|
|||
#include "editor/editor_node.h"
|
||||
#include "editor/editor_scale.h"
|
||||
|
||||
void TileProxiesManagerDialog::_right_clicked(int p_item, Vector2 p_local_mouse_pos, Object *p_item_list) {
|
||||
void TileProxiesManagerDialog::_right_clicked(int p_item, Vector2 p_local_mouse_pos, Object *p_item_list, MouseButton p_mouse_button_index) {
|
||||
if (p_mouse_button_index != MouseButton::RIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemList *item_list = Object::cast_to<ItemList>(p_item_list);
|
||||
popup_menu->reset_size();
|
||||
popup_menu->set_position(get_position() + item_list->get_global_mouse_position());
|
||||
|
@ -336,7 +340,7 @@ TileProxiesManagerDialog::TileProxiesManagerDialog() {
|
|||
source_level_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
source_level_list->set_select_mode(ItemList::SELECT_MULTI);
|
||||
source_level_list->set_allow_rmb_select(true);
|
||||
source_level_list->connect("item_rmb_selected", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(source_level_list));
|
||||
source_level_list->connect("item_clicked", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(source_level_list));
|
||||
vbox_container->add_child(source_level_list);
|
||||
|
||||
Label *coords_level_label = memnew(Label);
|
||||
|
@ -347,7 +351,7 @@ TileProxiesManagerDialog::TileProxiesManagerDialog() {
|
|||
coords_level_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
coords_level_list->set_select_mode(ItemList::SELECT_MULTI);
|
||||
coords_level_list->set_allow_rmb_select(true);
|
||||
coords_level_list->connect("item_rmb_selected", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(coords_level_list));
|
||||
coords_level_list->connect("item_clicked", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(coords_level_list));
|
||||
vbox_container->add_child(coords_level_list);
|
||||
|
||||
Label *alternative_level_label = memnew(Label);
|
||||
|
@ -358,7 +362,7 @@ TileProxiesManagerDialog::TileProxiesManagerDialog() {
|
|||
alternative_level_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
alternative_level_list->set_select_mode(ItemList::SELECT_MULTI);
|
||||
alternative_level_list->set_allow_rmb_select(true);
|
||||
alternative_level_list->connect("item_rmb_selected", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(alternative_level_list));
|
||||
alternative_level_list->connect("item_clicked", callable_mp(this, &TileProxiesManagerDialog::_right_clicked), varray(alternative_level_list));
|
||||
vbox_container->add_child(alternative_level_list);
|
||||
|
||||
popup_menu = memnew(PopupMenu);
|
||||
|
|
|
@ -61,7 +61,7 @@ private:
|
|||
EditorPropertyInteger *alternative_to_property_editor = nullptr;
|
||||
|
||||
PopupMenu *popup_menu = nullptr;
|
||||
void _right_clicked(int p_item, Vector2 p_local_mouse_pos, Object *p_item_list);
|
||||
void _right_clicked(int p_item, Vector2 p_local_mouse_pos, Object *p_item_list, MouseButton p_mouse_button_index);
|
||||
void _menu_id_pressed(int p_id);
|
||||
void _delete_selected_bindings();
|
||||
void _update_lists();
|
||||
|
|
|
@ -334,8 +334,13 @@ namespace GodotTools.Build
|
|||
}
|
||||
}
|
||||
|
||||
private void IssuesListRmbSelected(int index, Vector2 atPosition)
|
||||
private void IssuesListClicked(int index, Vector2 atPosition, int mouseButtonIndex)
|
||||
{
|
||||
if (mouseButtonIndex != (int)MouseButton.Right)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_ = index; // Unused
|
||||
|
||||
_issuesListContextMenu.Clear();
|
||||
|
@ -375,7 +380,7 @@ namespace GodotTools.Build
|
|||
};
|
||||
_issuesList.ItemActivated += IssueActivated;
|
||||
_issuesList.AllowRmbSelect = true;
|
||||
_issuesList.ItemRmbSelected += IssuesListRmbSelected;
|
||||
_issuesList.ItemClicked += IssuesListClicked;
|
||||
hsc.AddChild(_issuesList);
|
||||
|
||||
_issuesListContextMenu = new PopupMenu();
|
||||
|
|
|
@ -606,7 +606,7 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (mb.is_valid() && (mb->get_button_index() == MouseButton::LEFT || (allow_rmb_select && mb->get_button_index() == MouseButton::RIGHT)) && mb->is_pressed()) {
|
||||
if (mb.is_valid() && mb->is_pressed()) {
|
||||
search_string = ""; //any mousepress cancels
|
||||
Vector2 pos = mb->get_position();
|
||||
Ref<StyleBox> bg = get_theme_stylebox(SNAME("bg"));
|
||||
|
@ -631,7 +631,7 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
}
|
||||
|
||||
if (closest != -1) {
|
||||
if (closest != -1 && (mb->get_button_index() == MouseButton::LEFT || (allow_rmb_select && mb->get_button_index() == MouseButton::RIGHT))) {
|
||||
int i = closest;
|
||||
|
||||
if (select_mode == SELECT_MULTI && items[i].selected && mb->is_command_pressed()) {
|
||||
|
@ -654,59 +654,38 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
emit_signal(SNAME("multi_selected"), j, true);
|
||||
}
|
||||
}
|
||||
emit_signal(SNAME("item_clicked"), i, get_local_mouse_position(), mb->get_button_index());
|
||||
|
||||
if (mb->get_button_index() == MouseButton::RIGHT) {
|
||||
if (!CAN_SELECT(i)) {
|
||||
return;
|
||||
}
|
||||
emit_signal(SNAME("item_rmb_selected"), i, get_local_mouse_position());
|
||||
}
|
||||
} else {
|
||||
if (!mb->is_double_click() && !mb->is_command_pressed() && select_mode == SELECT_MULTI && items[i].selectable && !items[i].disabled && items[i].selected && mb->get_button_index() == MouseButton::LEFT) {
|
||||
defer_select_single = i;
|
||||
return;
|
||||
}
|
||||
|
||||
if (items[i].selected && mb->get_button_index() == MouseButton::RIGHT) {
|
||||
if (!CAN_SELECT(i)) {
|
||||
return;
|
||||
}
|
||||
emit_signal(SNAME("item_rmb_selected"), i, get_local_mouse_position());
|
||||
} else {
|
||||
if (!CAN_SELECT(i)) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool selected = items[i].selected;
|
||||
|
||||
if (!items[i].selected || allow_reselect) {
|
||||
select(i, select_mode == SELECT_SINGLE || !mb->is_command_pressed());
|
||||
|
||||
if (!selected || allow_reselect) {
|
||||
if (select_mode == SELECT_SINGLE) {
|
||||
emit_signal(SNAME("item_selected"), i);
|
||||
} else {
|
||||
emit_signal(SNAME("multi_selected"), i, true);
|
||||
}
|
||||
if (select_mode == SELECT_SINGLE) {
|
||||
emit_signal(SNAME("item_selected"), i);
|
||||
} else {
|
||||
emit_signal(SNAME("multi_selected"), i, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (mb->get_button_index() == MouseButton::RIGHT) {
|
||||
emit_signal(SNAME("item_rmb_selected"), i, get_local_mouse_position());
|
||||
} else if (/*select_mode==SELECT_SINGLE &&*/ mb->is_double_click()) {
|
||||
emit_signal(SNAME("item_activated"), i);
|
||||
}
|
||||
emit_signal(SNAME("item_clicked"), i, get_local_mouse_position(), mb->get_button_index());
|
||||
|
||||
if (mb->get_button_index() == MouseButton::LEFT && mb->is_double_click()) {
|
||||
emit_signal(SNAME("item_activated"), i);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
} else if (closest != -1) {
|
||||
emit_signal(SNAME("item_clicked"), closest, get_local_mouse_position(), mb->get_button_index());
|
||||
} else {
|
||||
// Since closest is null, more likely we clicked on empty space, so send signal to interested controls. Allows, for example, implement items deselecting.
|
||||
emit_signal(SNAME("empty_clicked"), get_local_mouse_position(), mb->get_button_index());
|
||||
}
|
||||
if (mb->get_button_index() == MouseButton::RIGHT) {
|
||||
emit_signal(SNAME("rmb_clicked"), mb->get_position());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Since closest is null, more likely we clicked on empty space, so send signal to interested controls. Allows, for example, implement items deselecting.
|
||||
emit_signal(SNAME("nothing_selected"));
|
||||
}
|
||||
if (mb.is_valid() && mb->get_button_index() == MouseButton::WHEEL_UP && mb->is_pressed()) {
|
||||
scroll_bar->set_value(scroll_bar->get_value() - scroll_bar->get_page() * mb->get_factor() / 8);
|
||||
|
@ -1797,11 +1776,10 @@ void ItemList::_bind_methods() {
|
|||
BIND_ENUM_CONSTANT(SELECT_MULTI);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "index")));
|
||||
ADD_SIGNAL(MethodInfo("item_rmb_selected", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::VECTOR2, "at_position")));
|
||||
ADD_SIGNAL(MethodInfo("empty_clicked", PropertyInfo(Variant::VECTOR2, "at_position"), PropertyInfo(Variant::INT, "mouse_button_index")));
|
||||
ADD_SIGNAL(MethodInfo("item_clicked", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::VECTOR2, "at_position"), PropertyInfo(Variant::INT, "mouse_button_index")));
|
||||
ADD_SIGNAL(MethodInfo("multi_selected", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "selected")));
|
||||
ADD_SIGNAL(MethodInfo("item_activated", PropertyInfo(Variant::INT, "index")));
|
||||
ADD_SIGNAL(MethodInfo("rmb_clicked", PropertyInfo(Variant::VECTOR2, "at_position")));
|
||||
ADD_SIGNAL(MethodInfo("nothing_selected"));
|
||||
|
||||
GLOBAL_DEF("gui/timers/incremental_search_max_interval_msec", 2000);
|
||||
ProjectSettings::get_singleton()->set_custom_property_info("gui/timers/incremental_search_max_interval_msec", PropertyInfo(Variant::INT, "gui/timers/incremental_search_max_interval_msec", PROPERTY_HINT_RANGE, "0,10000,1,or_greater")); // No negative numbers
|
||||
|
|
Loading…
Reference in a new issue