summaryrefslogtreecommitdiff
path: root/tools/editor
diff options
context:
space:
mode:
authorJulian Murgia - StraToN <the.straton@gmail.com>2015-08-18 20:27:01 +0200
committerJulian Murgia - StraToN <the.straton@gmail.com>2015-08-18 20:27:01 +0200
commit17fbd2067385aa3bcbfd676192cb57a9735596cf (patch)
tree5ca5232922d11fc24081c32c9f2057e17e77a742 /tools/editor
parentc2e2f2e0aebf6342e6f18ae5d67b6a825590675a (diff)
Added close button to tab. Added 4 display policies for this close button (show always, show never, show active tab only, show hover). Set the scene tabs in editor to follow the hover policy.
Diffstat (limited to 'tools/editor')
-rw-r--r--tools/editor/editor_node.cpp15
-rw-r--r--tools/editor/editor_node.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index b0a2c568de..6321745caa 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -3620,6 +3620,7 @@ void EditorNode::_bind_methods() {
ObjectTypeDB::bind_method("set_current_scene",&EditorNode::set_current_scene);
ObjectTypeDB::bind_method("set_current_version",&EditorNode::set_current_version);
ObjectTypeDB::bind_method("_scene_tab_changed",&EditorNode::_scene_tab_changed);
+ ObjectTypeDB::bind_method("_scene_tab_closed",&EditorNode::_scene_tab_closed);
ObjectTypeDB::bind_method("_scene_tab_script_edited",&EditorNode::_scene_tab_script_edited);
ObjectTypeDB::bind_method("_set_main_scene_state",&EditorNode::_set_main_scene_state);
ObjectTypeDB::bind_method("_update_scene_tabs",&EditorNode::_update_scene_tabs);
@@ -4072,6 +4073,17 @@ void EditorNode::_scene_tab_script_edited(int p_tab) {
edit_resource(script);
}
+void EditorNode::_scene_tab_closed(int p_tab) {
+ set_current_scene(p_tab);
+ bool p_confirmed = true;
+ if (unsaved_cache)
+ p_confirmed = false;
+
+ _menu_option_confirm(FILE_CLOSE, p_confirmed);
+ _update_scene_tabs();
+}
+
+
void EditorNode::_scene_tab_changed(int p_tab) {
@@ -4225,8 +4237,10 @@ EditorNode::EditorNode() {
scene_tabs=memnew( Tabs );
scene_tabs->add_tab("unsaved");
scene_tabs->set_tab_align(Tabs::ALIGN_CENTER);
+ scene_tabs->set_tab_close_display_policy(Tabs::SHOW_HOVER);
scene_tabs->connect("tab_changed",this,"_scene_tab_changed");
scene_tabs->connect("right_button_pressed",this,"_scene_tab_script_edited");
+ scene_tabs->connect("tab_close", this, "_scene_tab_closed");
top_dark_vb->add_child(scene_tabs);
//left
left_l_hsplit = memnew( HSplitContainer );
@@ -4363,6 +4377,7 @@ EditorNode::EditorNode() {
main_editor_tabs = memnew( Tabs );
main_editor_tabs->connect("tab_changed",this,"_editor_select");
+ main_editor_tabs->set_tab_close_display_policy(Tabs::SHOW_NEVER);
HBoxContainer *srth = memnew( HBoxContainer );
srt->add_child( srth );
Control *tec = memnew( Control );
diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h
index d40658a056..f08f413507 100644
--- a/tools/editor/editor_node.h
+++ b/tools/editor/editor_node.h
@@ -473,6 +473,7 @@ class EditorNode : public Node {
void _dock_split_dragged(int ofs);
void _dock_popup_exit();
void _scene_tab_changed(int p_tab);
+ void _scene_tab_closed(int p_tab);
void _scene_tab_script_edited(int p_tab);
Dictionary _get_main_scene_state();