Przeglądaj źródła

Add support for search shortcut to signal connection dialog

passivestar 1 rok temu
rodzic
commit
c2c791fed2
2 zmienionych plików z 15 dodań i 0 usunięć
  1. 13 0
      editor/connections_dialog.cpp
  2. 2 0
      editor/connections_dialog.h

+ 13 - 0
editor/connections_dialog.cpp

@@ -573,6 +573,18 @@ bool ConnectDialog::is_editing() const {
 	return edit_mode;
 }
 
+void ConnectDialog::shortcut_input(const Ref<InputEvent> &p_event) {
+	const Ref<InputEventKey> &key = p_event;
+
+	if (key.is_valid() && key->is_pressed() && !key->is_echo()) {
+		if (ED_IS_SHORTCUT("editor/open_search", p_event)) {
+			filter_nodes->grab_focus();
+			filter_nodes->select_all();
+			filter_nodes->accept_event();
+		}
+	}
+}
+
 /*
  * Initialize ConnectDialog and populate fields with expected data.
  * If creating a connection from scratch, sensible defaults are used.
@@ -1531,6 +1543,7 @@ ConnectionsDock::ConnectionsDock() {
 
 	connect_dialog = memnew(ConnectDialog);
 	connect_dialog->connect("connected", callable_mp(NodeDock::get_singleton(), &NodeDock::restore_last_valid_node), CONNECT_DEFERRED);
+	connect_dialog->set_process_shortcut_input(true);
 	add_child(connect_dialog);
 
 	disconnect_all_dialog = memnew(ConfirmationDialog);

+ 2 - 0
editor/connections_dialog.h

@@ -178,6 +178,8 @@ public:
 	bool get_one_shot() const;
 	bool is_editing() const;
 
+	virtual void shortcut_input(const Ref<InputEvent> &p_event) override;
+
 	void init(const ConnectionData &p_cd, const PackedStringArray &p_signal_args, bool p_edit = false);
 
 	void popup_dialog(const String p_for_signal);