diff options
| author | Ignacio Etcheverry | 2015-12-29 00:36:48 +0100 |
|---|---|---|
| committer | Ignacio Etcheverry | 2016-01-02 12:58:38 +0100 |
| commit | 3ca800226ece276d1ff568650134e8857840bfbb (patch) | |
| tree | 9358010e66f63e475c59013d5ab71f2a5fbe0808 /scene/gui/file_dialog.cpp | |
| parent | 4dba503fc3bee79ceedd69738c02f2fcf5cad27f (diff) | |
| download | godot-3ca800226ece276d1ff568650134e8857840bfbb.tar.gz godot-3ca800226ece276d1ff568650134e8857840bfbb.tar.zst godot-3ca800226ece276d1ff568650134e8857840bfbb.zip | |
Diffstat (limited to 'scene/gui/file_dialog.cpp')
| -rw-r--r-- | scene/gui/file_dialog.cpp | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 9179d3a4e..2a1681044 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -56,7 +56,42 @@ void FileDialog::_notification(int p_what) { //RID ci = get_canvas_item(); //get_stylebox("panel","PopupMenu")->draw(ci,Rect2(Point2(),get_size())); - } + } + + if (p_what==NOTIFICATION_POPUP_HIDE) { + + set_process_unhandled_input(false); + } +} + +void FileDialog::_unhandled_input(const InputEvent& p_event) { + + if (p_event.type==InputEvent::KEY && is_window_modal_on_top()) { + + const InputEventKey &k=p_event.key; + + if (k.pressed) { + + bool handled=true; + + switch (k.scancode) { + + case KEY_H: { + + if (k.mod.command) { + set_show_hidden_files(!show_hidden_files); + } else { + handled=false; + } + + } break; + default: { handled=false; } + } + + if (handled) + accept_event(); + } + } } void FileDialog::set_enable_multiple_selection(bool p_enable) { @@ -114,6 +149,8 @@ void FileDialog::_post_popup() { else tree->grab_focus(); + set_process_unhandled_input(true); + } void FileDialog::_action_pressed() { @@ -628,6 +665,8 @@ bool FileDialog::default_show_hidden_files=false; void FileDialog::_bind_methods() { + ObjectTypeDB::bind_method(_MD("_unhandled_input"),&FileDialog::_unhandled_input); + ObjectTypeDB::bind_method(_MD("_tree_selected"),&FileDialog::_tree_selected); ObjectTypeDB::bind_method(_MD("_tree_db_selected"),&FileDialog::_tree_dc_selected); ObjectTypeDB::bind_method(_MD("_dir_entered"),&FileDialog::_dir_entered); |
