Forráskód Böngészése

Merge pull request #6673 from J08nY/issue-update-spinner

Fix #6653, add an option to stop the update spinner from spinning
Rémi Verschelde 9 éve
szülő
commit
fb856e532e

+ 25 - 13
scene/gui/popup_menu.cpp

@@ -701,6 +701,13 @@ void PopupMenu::set_item_submenu(int p_idx, const String& p_submenu) {
 	update();
 }
 
+void PopupMenu::toggle_item_checked(int p_idx) {
+
+	ERR_FAIL_INDEX(p_idx,items.size());
+	items[p_idx].checked = !items[p_idx].checked;
+	update();
+}
+
 String PopupMenu::get_item_text(int p_idx) const {
 
 	ERR_FAIL_INDEX_V(p_idx,items.size(),"");
@@ -1061,33 +1068,40 @@ void PopupMenu::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("add_icon_check_shortcut","texture","shortcut:ShortCut","id"),&PopupMenu::add_icon_check_shortcut,DEFVAL(-1));
 	ObjectTypeDB::bind_method(_MD("add_check_shortcut","shortcut:ShortCut","id"),&PopupMenu::add_check_shortcut,DEFVAL(-1));
 
-
 	ObjectTypeDB::bind_method(_MD("set_item_text","idx","text"),&PopupMenu::set_item_text);
 	ObjectTypeDB::bind_method(_MD("set_item_icon","idx","icon"),&PopupMenu::set_item_icon);
+	ObjectTypeDB::bind_method(_MD("set_item_checked","idx","checked"),&PopupMenu::set_item_checked);
+	ObjectTypeDB::bind_method(_MD("set_item_ID","idx","id"),&PopupMenu::set_item_ID);
 	ObjectTypeDB::bind_method(_MD("set_item_accelerator","idx","accel"),&PopupMenu::set_item_accelerator);
 	ObjectTypeDB::bind_method(_MD("set_item_metadata","idx","metadata"),&PopupMenu::set_item_metadata);
-	ObjectTypeDB::bind_method(_MD("set_item_checked","idx","checked"),&PopupMenu::set_item_checked);
 	ObjectTypeDB::bind_method(_MD("set_item_disabled","idx","disabled"),&PopupMenu::set_item_disabled);
-	ObjectTypeDB::bind_method(_MD("set_item_shortcut","idx","shortcut:ShortCut"),&PopupMenu::set_item_shortcut);
 	ObjectTypeDB::bind_method(_MD("set_item_submenu","idx","submenu"),&PopupMenu::set_item_submenu);
 	ObjectTypeDB::bind_method(_MD("set_item_as_separator","idx","enable"),&PopupMenu::set_item_as_separator);
 	ObjectTypeDB::bind_method(_MD("set_item_as_checkable","idx","enable"),&PopupMenu::set_item_as_checkable);
-	ObjectTypeDB::bind_method(_MD("set_item_ID","idx","id"),&PopupMenu::set_item_ID);
+	ObjectTypeDB::bind_method(_MD("set_item_tooltip","idx","tooltip"),&PopupMenu::set_item_tooltip);
+	ObjectTypeDB::bind_method(_MD("set_item_shortcut","idx","shortcut:ShortCut"),&PopupMenu::set_item_shortcut);
+
+	ObjectTypeDB::bind_method(_MD("toggle_item_checked","idx"), &PopupMenu::toggle_item_checked);
+
 	ObjectTypeDB::bind_method(_MD("get_item_text","idx"),&PopupMenu::get_item_text);
 	ObjectTypeDB::bind_method(_MD("get_item_icon","idx"),&PopupMenu::get_item_icon);
-	ObjectTypeDB::bind_method(_MD("get_item_metadata","idx"),&PopupMenu::get_item_metadata);
+	ObjectTypeDB::bind_method(_MD("is_item_checked","idx"),&PopupMenu::is_item_checked);
+	ObjectTypeDB::bind_method(_MD("get_item_ID","idx"),&PopupMenu::get_item_ID);
+	ObjectTypeDB::bind_method(_MD("get_item_index","id"),&PopupMenu::get_item_index);
 	ObjectTypeDB::bind_method(_MD("get_item_accelerator","idx"),&PopupMenu::get_item_accelerator);
-	ObjectTypeDB::bind_method(_MD("get_item_shortcut:ShortCut","idx"),&PopupMenu::get_item_shortcut);
+	ObjectTypeDB::bind_method(_MD("get_item_metadata","idx"),&PopupMenu::get_item_metadata);
+	ObjectTypeDB::bind_method(_MD("is_item_disabled","idx"),&PopupMenu::is_item_disabled);
 	ObjectTypeDB::bind_method(_MD("get_item_submenu","idx"),&PopupMenu::get_item_submenu);
 	ObjectTypeDB::bind_method(_MD("is_item_separator","idx"),&PopupMenu::is_item_separator);
 	ObjectTypeDB::bind_method(_MD("is_item_checkable","idx"),&PopupMenu::is_item_checkable);
-	ObjectTypeDB::bind_method(_MD("is_item_checked","idx"),&PopupMenu::is_item_checked);
-	ObjectTypeDB::bind_method(_MD("is_item_disabled","idx"),&PopupMenu::is_item_disabled);
-	ObjectTypeDB::bind_method(_MD("get_item_ID","idx"),&PopupMenu::get_item_ID);
-	ObjectTypeDB::bind_method(_MD("get_item_index","id"),&PopupMenu::get_item_index);
+	ObjectTypeDB::bind_method(_MD("get_item_tooltip","idx"),&PopupMenu::get_item_tooltip);
+	ObjectTypeDB::bind_method(_MD("get_item_shortcut:ShortCut","idx"),&PopupMenu::get_item_shortcut);
+
 	ObjectTypeDB::bind_method(_MD("get_item_count"),&PopupMenu::get_item_count);
-	ObjectTypeDB::bind_method(_MD("add_separator"),&PopupMenu::add_separator);
+
 	ObjectTypeDB::bind_method(_MD("remove_item","idx"),&PopupMenu::remove_item);
+
+	ObjectTypeDB::bind_method(_MD("add_separator"),&PopupMenu::add_separator);
 	ObjectTypeDB::bind_method(_MD("clear"),&PopupMenu::clear);
 
 	ObjectTypeDB::bind_method(_MD("_set_items"),&PopupMenu::_set_items);
@@ -1125,5 +1139,3 @@ PopupMenu::PopupMenu() {
 
 PopupMenu::~PopupMenu() {
 }
-
-

+ 2 - 0
scene/gui/popup_menu.h

@@ -116,6 +116,8 @@ public:
 	void set_item_tooltip(int p_idx,const String& p_tooltip);
 	void set_item_shortcut(int p_idx, const Ref<ShortCut>& p_shortcut);
 
+	void toggle_item_checked(int p_idx);
+
 	String get_item_text(int p_idx) const;
 	Ref<Texture> get_item_icon(int p_idx) const;
 	bool is_item_checked(int p_idx) const;

+ 11 - 3
tools/editor/editor_node.cpp

@@ -266,10 +266,12 @@ void EditorNode::_notification(int p_what) {
 				circle_step=0;
 
 			circle_step_msec=tick;
-		circle_step_frame=frame+1;
-
-			update_menu->set_icon(gui_base->get_icon("Progress"+itos(circle_step+1),"EditorIcons"));
+		    circle_step_frame=frame+1;
 
+            // update the circle itself only when its enabled
+            if (!update_menu->get_popup()->is_item_checked(3)){
+                update_menu->set_icon(gui_base->get_icon("Progress"+itos(circle_step+1),"EditorIcons"));
+            }
 		}
 
 		scene_root->set_size_override(true,Size2(Globals::get_singleton()->get("display/width"),Globals::get_singleton()->get("display/height")));
@@ -2797,6 +2799,10 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
 			update_menu->get_popup()->set_item_checked(1,true);
 			OS::get_singleton()->set_low_processor_usage_mode(true);
 		} break;
+        case SETTINGS_UPDATE_SPINNER_HIDE: {
+			update_menu->set_icon(gui_base->get_icon("Collapse","EditorIcons"));
+            update_menu->get_popup()->toggle_item_checked(3);
+        } break;
 		case SETTINGS_PREFERENCES: {
 
 			settings_config_dialog->popup_edit_settings();
@@ -6064,6 +6070,8 @@ EditorNode::EditorNode() {
 	p=update_menu->get_popup();
 	p->add_check_item(TTR("Update Always"),SETTINGS_UPDATE_ALWAYS);
 	p->add_check_item(TTR("Update Changes"),SETTINGS_UPDATE_CHANGES);
+    p->add_separator();
+    p->add_check_item(TTR("Disable Update Spinner"),SETTINGS_UPDATE_SPINNER_HIDE);
 	p->set_item_checked(1,true);
 
 	//sources_button->connect();

+ 1 - 0
tools/editor/editor_node.h

@@ -179,6 +179,7 @@ private:
 		RUN_RELOAD_SCRIPTS,
 		SETTINGS_UPDATE_ALWAYS,
 		SETTINGS_UPDATE_CHANGES,
+		SETTINGS_UPDATE_SPINNER_HIDE,
 		SETTINGS_EXPORT_PREFERENCES,
 		SETTINGS_PREFERENCES,
 		SETTINGS_OPTIMIZED_PRESETS,