From fc80b9f34510bc5322306b88173631b4e9a0ab2c Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Tue, 3 Sep 2019 17:22:02 -0500 Subject: [PATCH] Basic support for multi-column trees. --- addons/accessibility/accessible.gd | 43 ++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/addons/accessibility/accessible.gd b/addons/accessibility/accessible.gd index 754028a..0681210 100644 --- a/addons/accessibility/accessible.gd +++ b/addons/accessibility/accessible.gd @@ -148,8 +148,30 @@ func tree_item_render(): result += ": selected" tts.speak(result, true) -func tree_item_cell_selected(): - tree_item_render() +var prev_selected_cell + +func tree_item_selected(): + var cell = node.get_selected() + if cell != prev_selected_cell: + print("New cell") + tree_item_render() + prev_selected_cell = cell + else: + var text = "" + for i in range(node.columns): + if cell.is_selected(i): + var title = node.get_column_title(i) + if title: + text += title + ": " + text += cell.get_text(i) + ", " + if text != "": + tts.speak(text, true) + +func tree_item_multi_select(item, column, selected): + if selected: + tts.speak("selected", true) + else: + tts.speak("unselected", true) func tree_focus(): if node.get_selected(): @@ -164,16 +186,6 @@ func tree_item_collapse(item): else: tts.speak("expanded", true) -func tree_item_select(): - if node.has_focus(): - tree_item_render() - -func tree_item_multi_select(item, column, selected): - if selected: - tts.speak("selected", true) - else: - tts.speak("unselected", true) - func tab_container_focus(): var text = node.get_tab_title(node.current_tab) text += ": tab: " + str(node.current_tab + 1) + " of " + str(node.get_tab_count()) @@ -260,7 +272,10 @@ func _init(tts, node): node.connect("id_focused", self, "popup_menu_item_id_focus") elif node is Tree: node.connect("item_collapsed", self, "tree_item_collapse") - node.connect("item_selected", self, "tree_item_select") + node.connect("item_selected", self, "tree_item_selected") node.connect("multi_selected", self, "tree_item_multi_select") - node.connect("cell_selected", self, "tree_item_cell_selected") + if node.select_mode == Tree.SELECT_MULTI: + node.connect("cell_selected", self, "tree_item_selected") + else: + node.connect("item_selected", self, "tree_item_selected") node.connect("tree_exiting", self, "free")