Browse Source

Merge pull request #51186 from lawnjelly/portals_fix_ui_default

Rémi Verschelde 4 years ago
parent
commit
8f3ec04811
2 changed files with 27 additions and 20 deletions
  1. 26 19
      editor/plugins/spatial_editor_plugin.cpp
  2. 1 1
      editor/plugins/spatial_editor_plugin.h

+ 26 - 19
editor/plugins/spatial_editor_plugin.cpp

@@ -4319,28 +4319,31 @@ void SpatialEditor::show_advanced_portal_tools(bool p_show) {
 }
 
 void SpatialEditor::update_portal_tools() {
-	// the view portal culling toggle
-	int view_portal_item_index = view_menu->get_popup()->get_item_index(MENU_VIEW_PORTAL_CULLING);
-	if (RoomManager::active_room_manager) {
-		view_menu->get_popup()->set_item_disabled(view_portal_item_index, false);
-
-		bool active = RoomManager::static_rooms_get_active();
-		view_menu->get_popup()->set_item_checked(view_portal_item_index, active);
-	} else {
-		view_menu->get_popup()->set_item_disabled(view_portal_item_index, true);
-	}
+	// just some protection against calling null pointers, hopefully not needed
+	if (view_menu && view_menu->get_popup()) {
+		// the view portal culling toggle
+		int view_portal_item_index = view_menu->get_popup()->get_item_index(MENU_VIEW_PORTAL_CULLING);
+		if (RoomManager::active_room_manager) {
+			view_menu->get_popup()->set_item_disabled(view_portal_item_index, false);
+
+			bool active = RoomManager::static_rooms_get_active();
+			view_menu->get_popup()->set_item_checked(view_portal_item_index, active);
+		} else {
+			view_menu->get_popup()->set_item_disabled(view_portal_item_index, true);
+		}
 
-	// toolbar button
-	Button *const button = tool_button[TOOL_CONVERT_ROOMS];
+		// toolbar button
+		Button *const button = tool_button[TOOL_CONVERT_ROOMS];
 
-	if (RoomManager::active_room_manager) {
-		button->show();
-	} else {
-		button->hide();
-	}
+		if (RoomManager::active_room_manager) {
+			button->show();
+		} else {
+			button->hide();
+		}
 
-	for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) {
-		viewports[i]->_update_name();
+		for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) {
+			viewports[i]->_update_name();
+		}
 	}
 }
 
@@ -6593,6 +6596,10 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
 	EDITOR_DEF("editors/3d/navigation/show_viewport_rotation_gizmo", true);
 
 	over_gizmo_handle = -1;
+
+	// make sure the portal tools are off by default
+	// (when no RoomManager is present)
+	update_portal_tools();
 }
 
 SpatialEditor::~SpatialEditor() {

+ 1 - 1
editor/plugins/spatial_editor_plugin.h

@@ -652,7 +652,7 @@ private:
 
 	MenuButton *transform_menu;
 	PopupMenu *gizmos_menu;
-	MenuButton *view_menu;
+	MenuButton *view_menu = nullptr;
 
 	AcceptDialog *accept;