Просмотр исходного кода

made main menu only open when clicked in a valid location freeing up right click to be used for popup menus in nodes

Jonathan Higgins 7 месяцев назад
Родитель
Сommit
7ea74368f6

+ 1 - 0
scenes/Nodes/nodes.tscn

@@ -284,6 +284,7 @@ text = "Cycle Count"
 [node name="HSlider" parent="distort_average/VBoxContainer/HSplitContainer" index="0"]
 min_value = 1.0
 value = 5.0
+metadata/brk = true
 
 [node name="clip_clip_2" type="GraphNode" parent="."]
 layout_mode = 0

+ 15 - 0
scenes/Nodes/valueslider.gd

@@ -36,3 +36,18 @@ func _on_line_edit_focus_exited() -> void:
 			$HSplitContainer/HSlider.set_value_no_signal(new_val)
 	else:
 		$HSplitContainer/LineEdit.text = str($HSplitContainer/HSlider.value)
+		
+
+
+
+		
+
+
+#func _on_h_slider_gui_input(event: InputEvent) -> void:
+	#if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and $HSplitContainer/HSlider.has_meta("brk"):
+		#var local_pos = to_local(get_global_mouse_position())
+		## Show popup at global mouse position
+		#$HSplitContainer/HSlider/PopupMenu.popup()
+		#$HSplitContainer/HSlider/PopupMenu.set_position(get_viewport().get_mouse_position())
+		## Prevent default context menu or input propagation if needed
+		#accept_event()

+ 7 - 0
scenes/Nodes/valueslider.tscn

@@ -23,6 +23,12 @@ layout_mode = 2
 size_flags_vertical = 1
 value = 10.0
 
+[node name="PopupMenu" type="PopupMenu" parent="HSplitContainer/HSlider"]
+size = Vector2i(200, 100)
+item_count = 1
+item_0/text = "Automation Settings"
+item_0/id = 0
+
 [node name="LineEdit" type="LineEdit" parent="HSplitContainer"]
 layout_mode = 2
 text = "0.0"
@@ -34,6 +40,7 @@ flat = true
 layout_mode = 2
 theme_override_constants/margin_bottom = 3
 
+[connection signal="gui_input" from="HSplitContainer/HSlider" to="." method="_on_h_slider_gui_input"]
 [connection signal="value_changed" from="HSplitContainer/HSlider" to="." method="_on_h_slider_value_changed"]
 [connection signal="focus_exited" from="HSplitContainer/LineEdit" to="." method="_on_line_edit_focus_exited"]
 [connection signal="text_submitted" from="HSplitContainer/LineEdit" to="." method="_on_line_edit_text_submitted"]

+ 37 - 19
scenes/main/control.gd

@@ -156,7 +156,8 @@ func _on_cdp_location_dialog_canceled() -> void:
 	
 # Called every frame. 'delta' is the elapsed time since the previous frame.
 func _process(delta: float) -> void:
-	showmenu()
+	#showmenu()
+	pass
 	
 
 func _input(event):
@@ -180,24 +181,24 @@ func _input(event):
 
 #logic for making, connecting, disconnecting, copy pasting and deleteing nodes and connections in GraphEdit
 #mostly taken from https://gdscript.com/solutions/godot-graphnode-and-graphedit-tutorial/
-func showmenu():
-	#check for mouse input and if menu is already open and then open or close the menu
-	#stores mouse position at time of right click to later place a node in that location
-	if Input.is_action_just_pressed("open_menu"):
-		if mainmenu_visible == false:
-			effect_position = graph_edit.get_local_mouse_position()
-			#$mainmenu.position.x = min(effect_position.x, get_viewport().get_visible_rect().size.x - $mainmenu.size.x)
-			#$mainmenu.position.y = min(effect_position.y, get_viewport().get_visible_rect().size.y - $mainmenu.size.y)
-			$mainmenu.position.x = clamp(get_viewport().get_mouse_position().x, $mainmenu/select_effect.size.x / 2, get_viewport().get_visible_rect().size.x - ($mainmenu/select_effect.size.x / 2))
-			$mainmenu.position.y = clamp(get_viewport().get_mouse_position().y, ($mainmenu/select_effect.size.y / 2) + $ColorRect.size.y, get_viewport().get_visible_rect().size.y - ($mainmenu/select_effect.size.y / 2))
-			print($GraphEdit.scroll_offset)
-			#print(DisplayServer.window_get_size()) #actual window size
-			#print(get_viewport().get_visible_rect().size) # window size asjusted for retina scaling
-			$mainmenu.show()
-			mainmenu_visible = true
-		else:
-			$mainmenu.hide()
-			mainmenu_visible = false
+#func showmenu():
+	##check for mouse input and if menu is already open and then open or close the menu
+	##stores mouse position at time of right click to later place a node in that location
+	#if Input.is_action_just_pressed("open_menu"):
+		#if mainmenu_visible == false:
+			#effect_position = graph_edit.get_local_mouse_position()
+			##$mainmenu.position.x = min(effect_position.x, get_viewport().get_visible_rect().size.x - $mainmenu.size.x)
+			##$mainmenu.position.y = min(effect_position.y, get_viewport().get_visible_rect().size.y - $mainmenu.size.y)
+			#$mainmenu.position.x = clamp(get_viewport().get_mouse_position().x, $mainmenu/select_effect.size.x / 2, get_viewport().get_visible_rect().size.x - ($mainmenu/select_effect.size.x / 2))
+			#$mainmenu.position.y = clamp(get_viewport().get_mouse_position().y, ($mainmenu/select_effect.size.y / 2) + $ColorRect.size.y, get_viewport().get_visible_rect().size.y - ($mainmenu/select_effect.size.y / 2))
+			#print($GraphEdit.scroll_offset)
+			##print(DisplayServer.window_get_size()) #actual window size
+			##print(get_viewport().get_visible_rect().size) # window size asjusted for retina scaling
+			#$mainmenu.show()
+			#mainmenu_visible = true
+		#else:
+			#$mainmenu.hide()
+			#mainmenu_visible = false
 
 # creates nodes from menu
 func _on_button_pressed(button: Button):
@@ -1385,3 +1386,20 @@ func _open_output_folder():
 func _on_rich_text_label_meta_clicked(meta: Variant) -> void:
 	print(str(meta))
 	OS.shell_open(str(meta))
+
+
+func _on_graph_edit_popup_request(at_position: Vector2) -> void:
+	if mainmenu_visible == false:
+		effect_position = graph_edit.get_local_mouse_position()
+		#$mainmenu.position.x = min(effect_position.x, get_viewport().get_visible_rect().size.x - $mainmenu.size.x)
+		#$mainmenu.position.y = min(effect_position.y, get_viewport().get_visible_rect().size.y - $mainmenu.size.y)
+		$mainmenu.position.x = clamp(get_viewport().get_mouse_position().x, $mainmenu/select_effect.size.x / 2, get_viewport().get_visible_rect().size.x - ($mainmenu/select_effect.size.x / 2))
+		$mainmenu.position.y = clamp(get_viewport().get_mouse_position().y, ($mainmenu/select_effect.size.y / 2) + $ColorRect.size.y, get_viewport().get_visible_rect().size.y - ($mainmenu/select_effect.size.y / 2))
+		print($GraphEdit.scroll_offset)
+		#print(DisplayServer.window_get_size()) #actual window size
+		#print(get_viewport().get_visible_rect().size) # window size asjusted for retina scaling
+		$mainmenu.show()
+		mainmenu_visible = true
+	else:
+		$mainmenu.hide()
+		mainmenu_visible = false

+ 1 - 0
scenes/main/control.tscn

@@ -309,6 +309,7 @@ text = "Don't Save"
 [connection signal="disconnection_request" from="GraphEdit" to="." method="_on_graph_edit_disconnection_request"]
 [connection signal="node_deselected" from="GraphEdit" to="." method="_on_graph_edit_node_deselected"]
 [connection signal="node_selected" from="GraphEdit" to="." method="_on_graph_edit_node_selected"]
+[connection signal="popup_request" from="GraphEdit" to="." method="_on_graph_edit_popup_request"]
 [connection signal="dir_selected" from="FileDialog" to="." method="_on_file_dialog_dir_selected"]
 [connection signal="meta_clicked" from="NoLocationPopup/RichTextLabel" to="." method="_on_rich_text_label_meta_clicked"]
 [connection signal="button_down" from="NoLocationPopup/OkButton" to="." method="_on_ok_button_button_down"]