diff --git a/addons/material_maker/engine/nodes/gen_shader.gd b/addons/material_maker/engine/nodes/gen_shader.gd index 9cffc4358..12ba5a783 100644 --- a/addons/material_maker/engine/nodes/gen_shader.gd +++ b/addons/material_maker/engine/nodes/gen_shader.gd @@ -806,6 +806,8 @@ func do_edit(node, edit_window_scene : PackedScene, tab : String = "") -> void: edit_window.set_model_data(get_shader_model_for_edit()) edit_window.connect("node_changed", Callable(node, "update_shader_generator")) edit_window.connect("popup_hide", Callable(edit_window, "queue_free")) + edit_window.get_window().content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + edit_window.get_window().min_size = Vector2(950, 450) * edit_window.get_window().content_scale_factor edit_window.popup_centered() if tab != "": edit_window.show_tab(tab) diff --git a/material_maker/globals.gd b/material_maker/globals.gd index b4995e8d4..1d20df0ad 100644 --- a/material_maker/globals.gd +++ b/material_maker/globals.gd @@ -143,7 +143,12 @@ func parse_paste_data(data : String): # Misc. UI functions static func popup_menu(menu : PopupMenu, parent : Control): - menu.popup(Rect2(parent.get_local_mouse_position()+parent.get_screen_position(), Vector2(0, 0))) + var zoom_fac = 1.0 + if parent is GraphNode: + zoom_fac *= mm_globals.main_window.get_current_graph_edit().zoom + + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + menu.popup(Rect2(parent.get_local_mouse_position()*content_scale_factor*zoom_fac + parent.get_screen_position(), Vector2(0, 0))) func set_tip_text(tip : String, timeout : float = 0.0, priority: int = 0): main_window.set_tip_text(tip, timeout, priority) diff --git a/material_maker/main_window.gd b/material_maker/main_window.gd index 047abb099..626890231 100644 --- a/material_maker/main_window.gd +++ b/material_maker/main_window.gd @@ -839,6 +839,7 @@ func edit_save_selection() -> void: func edit_preferences() -> void: var dialog = load("res://material_maker/windows/preferences/preferences.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor dialog.edit_preferences(mm_globals.config) func view_center() -> void: @@ -888,6 +889,8 @@ func add_selection_to_library(index) -> void: if selected_nodes.is_empty(): return var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var current_item_name = "" if library.is_inside_tree(): @@ -913,6 +916,8 @@ func create_menu_add_brush_to_library(menu : MMMenuManager.MenuBase) -> void: func add_brush_to_library(index) -> void: var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("New library element", "Select a name for the new library element", brushes.get_selected_item_name()) if ! status.ok: diff --git a/material_maker/nodes/base.gd b/material_maker/nodes/base.gd index 3eb6bb789..dcbf362b1 100644 --- a/material_maker/nodes/base.gd +++ b/material_maker/nodes/base.gd @@ -415,6 +415,8 @@ func _on_menu_id_pressed(id : int) -> void: status.append({ ok=false, message="The following outputs do not have a short and a long description: "+", ".join(bad) }) # Show warning dialog var dialog = preload("res://material_maker/tools/share/share_node_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(600, 400) * dialog.content_scale_factor var result = await dialog.ask(status) if result != "ok": return diff --git a/material_maker/nodes/comment/comment.gd b/material_maker/nodes/comment/comment.gd index 943aef975..1353c65d4 100644 --- a/material_maker/nodes/comment/comment.gd +++ b/material_maker/nodes/comment/comment.gd @@ -131,7 +131,10 @@ func _on_text_focus_exited(): func _on_change_color_pressed(): var light_theme = "light" in mm_globals.main_window.theme.resource_path accept_event() - $Popup.position = get_local_mouse_position()+get_screen_position() + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + $Popup.get_window().content_scale_factor = content_scale_factor + $Popup.get_window().min_size = $Popup.get_window().get_contents_minimum_size() * content_scale_factor + $Popup.position = get_global_mouse_position() * content_scale_factor $Popup.popup() var corrected_color = pallette_colors.duplicate(true) if !light_theme: @@ -173,7 +176,11 @@ func _on_ColorChooser_gui_input(event: InputEvent) -> void: if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: accept_event() $Popup.hide() - $PopupSelector.popup(Rect2(event.global_position, Vector2(0, 0))) + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + $PopupSelector.get_window().content_scale_factor = content_scale_factor + $PopupSelector.get_window().min_size = $PopupSelector.get_window().get_contents_minimum_size() * content_scale_factor + $PopupSelector.get_window().position = get_global_mouse_position() * content_scale_factor + $PopupSelector.popup() $PopupSelector/PanelContainer/ColorPicker.color = generator.color if not $PopupSelector/PanelContainer/ColorPicker.color_changed.is_connected(self.set_color): $PopupSelector/PanelContainer/ColorPicker.color_changed.connect(self.set_color) diff --git a/material_maker/nodes/debug/debug_popup.gd b/material_maker/nodes/debug/debug_popup.gd index f6db04b19..f69dd2c3e 100644 --- a/material_maker/nodes/debug/debug_popup.gd +++ b/material_maker/nodes/debug/debug_popup.gd @@ -4,6 +4,10 @@ var src_code const GENFUNCTIONS : Array = [ "generate_shadertoy", "generate_godot_canvasitem", "generate_godot_spatial" ] +func _on_ready() -> void: + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(500 ,500) * content_scale_factor + func show_code(s) -> void: src_code = s _on_ShaderType_item_selected(0) diff --git a/material_maker/nodes/debug/debug_popup.tscn b/material_maker/nodes/debug/debug_popup.tscn index 1b65ae4bc..fe290566e 100644 --- a/material_maker/nodes/debug/debug_popup.tscn +++ b/material_maker/nodes/debug/debug_popup.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://bay8he3yeaj1q"] -[ext_resource type="Script" path="res://material_maker/nodes/debug/debug_popup.gd" id="1"] +[ext_resource type="Script" uid="uid://knk1qxod1t7o" path="res://material_maker/nodes/debug/debug_popup.gd" id="1"] [ext_resource type="PackedScene" uid="uid://ddgb7ul6fncx8" path="res://material_maker/widgets/code_editor/code_editor.tscn" id="2_tw3os"] [sub_resource type="Shader" id="2"] @@ -27,8 +27,8 @@ layout_mode = 2 [node name="ShaderType" type="OptionButton" parent="VBoxContainer/HBoxContainer"] layout_mode = 2 -item_count = 4 selected = 0 +item_count = 4 popup/item_0/text = "Shadertoy" popup/item_0/id = 0 popup/item_1/text = "Godot Canvas item" @@ -54,5 +54,6 @@ layout_mode = 2 size_flags_vertical = 3 [connection signal="close_requested" from="." to="." method="queue_free"] +[connection signal="ready" from="." to="." method="_on_ready"] [connection signal="item_selected" from="VBoxContainer/HBoxContainer/ShaderType" to="." method="_on_ShaderType_item_selected"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/CopyToClipboard" to="." method="_on_CopyToClipboard_pressed"] diff --git a/material_maker/nodes/remote/named_parameter_dialog.gd b/material_maker/nodes/remote/named_parameter_dialog.gd index f5016230e..79c177392 100644 --- a/material_maker/nodes/remote/named_parameter_dialog.gd +++ b/material_maker/nodes/remote/named_parameter_dialog.gd @@ -3,7 +3,8 @@ extends Window signal return_values(values) func _ready(): - pass # Replace with function body. + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(450, 60) * content_scale_factor func _on_OK_pressed() -> void: emit_signal("return_values", { min=$VBoxContainer/float/Min.value, max=$VBoxContainer/float/Max.value, step=$VBoxContainer/float/Step.value, default=$VBoxContainer/float/Default.value} ) diff --git a/material_maker/panels/graph_edit/graph_edit.gd b/material_maker/panels/graph_edit/graph_edit.gd index 7b6ca7389..c552f3146 100644 --- a/material_maker/panels/graph_edit/graph_edit.gd +++ b/material_maker/panels/graph_edit/graph_edit.gd @@ -549,8 +549,12 @@ func load_file(filename) -> bool: else: var dialog : AcceptDialog = AcceptDialog.new() add_child(dialog) + var content_scale_factor = (mm_globals.main_window + .get_window().content_scale_factor) + dialog.content_scale_factor = content_scale_factor dialog.title = "Load failed!" dialog.dialog_text = "Failed to load "+filename + dialog.min_size = dialog.get_contents_minimum_size() * content_scale_factor dialog.connect("popup_hide", Callable(dialog, "queue_free")) dialog.popup_centered() return false diff --git a/material_maker/panels/layers/layer_config_popup.gd b/material_maker/panels/layers/layer_config_popup.gd index 8a3d62b1c..64e88d543 100644 --- a/material_maker/panels/layers/layer_config_popup.gd +++ b/material_maker/panels/layers/layer_config_popup.gd @@ -13,7 +13,7 @@ func configure_layer(layers : Node, l : Object) -> void: $GridContainer/Normal.set_value(l.normal_alpha) $GridContainer/Depth.set_value(l.depth_alpha) $GridContainer/Occlusion.set_value(l.occlusion_alpha) - popup(Rect2($GridContainer.get_global_mouse_position(), $GridContainer.get_minimum_size())) + popup(Rect2($GridContainer.get_global_mouse_position() * content_scale_factor, $GridContainer.get_minimum_size())) func _on_LayerConfigPopup_popup_hide(): queue_free() diff --git a/material_maker/panels/layers/layers.gd b/material_maker/panels/layers/layers.gd index 57f19be64..efeda5eca 100644 --- a/material_maker/panels/layers/layers.gd +++ b/material_maker/panels/layers/layers.gd @@ -25,7 +25,8 @@ func _on_Add_pressed(): menu.connect("id_pressed", Callable(self, "_on_add_layer_menu")) menu.connect("id_pressed", Callable(menu, "queue_free")) menu.connect("popup_hide", Callable(menu, "queue_free")) - menu.popup(Rect2(Vector2(button_rect.position.x, button_rect.end.y), Vector2(0, 0))) + menu.popup(Rect2(Vector2(button_rect.position.x, button_rect.end.y) * + mm_globals.main_window.get_window().content_scale_factor, Vector2(0, 0))) func _on_add_layer_menu(id): layers.add_layer(id) @@ -59,5 +60,7 @@ func _on_Config_pressed(): if layer.get_layer_type() == MMLayer.LAYER_MASK: return var popup = preload("res://material_maker/panels/layers/layer_config_popup.tscn").instantiate() + popup.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + popup.min_size = Vector2(228, 245) * popup.content_scale_factor add_child(popup) popup.configure_layer(layers, current.get_meta("layer")) diff --git a/material_maker/panels/library/create_lib_dialog.gd b/material_maker/panels/library/create_lib_dialog.gd index 48c3785a8..a470f878f 100644 --- a/material_maker/panels/library/create_lib_dialog.gd +++ b/material_maker/panels/library/create_lib_dialog.gd @@ -10,6 +10,7 @@ signal return_info(status) func _ready(): + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor %FilePickerButton.set_mode(FileDialog.FILE_MODE_OPEN_DIR) %FilePickerButton.icon = get_parent().get_theme_icon("folder", "MM_Icons") popup_centered() @@ -67,5 +68,5 @@ func enter_info(value : String = "") -> Dictionary: return result func _on_VBoxContainer_minimum_size_changed(): - min_size = $MarginContainer.get_combined_minimum_size() + min_size = $MarginContainer.get_combined_minimum_size() * content_scale_factor max_size = Vector2(max_size.x, $MarginContainer.get_minimum_size().y) diff --git a/material_maker/panels/library/library.gd b/material_maker/panels/library/library.gd index 169eed489..0f40cd497 100644 --- a/material_maker/panels/library/library.gd +++ b/material_maker/panels/library/library.gd @@ -18,8 +18,13 @@ const MINIMUM_ITEM_HEIGHT : int = 30 const MENU_CREATE_LIBRARY : int = 1000 const MENU_LOAD_LIBRARY : int = 1001 +func _context_menu_about_to_popup(context_menu : PopupMenu) -> void: + context_menu.position = get_window().position+ Vector2i( + get_global_mouse_position() * get_window().content_scale_factor) func _ready() -> void: + %Filter.get_menu().about_to_popup.connect( + _context_menu_about_to_popup.bind(%Filter.get_menu())) # Setup tree tree.set_column_expand(0, true) tree.set_column_expand(1, false) @@ -330,6 +335,8 @@ func _on_PopupMenu_index_pressed(index): match index: 0: # Rename var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("Rename item", "Enter the new name for this item", item_path) if status.ok: @@ -346,6 +353,8 @@ func _on_PopupMenu_index_pressed(index): 4: # Define aliases var aliases = library_manager.get_aliases(item_path) var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(400, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("Library item aliases", "Updated aliases for "+item_path, aliases) if ! status.ok: diff --git a/material_maker/panels/preview_2d/preview_2d_panel.gd b/material_maker/panels/preview_2d/preview_2d_panel.gd index 0e17306d2..1381db7e6 100644 --- a/material_maker/panels/preview_2d/preview_2d_panel.gd +++ b/material_maker/panels/preview_2d/preview_2d_panel.gd @@ -48,6 +48,10 @@ const POSTPROCESS_OPTIONS : Array = [ func _ready(): + var content_scale_factor = mm_globals.get_window().content_scale_factor + %GuidesColor.get_popup().content_scale_factor = content_scale_factor + %GuidesColor.get_popup().min_size = %GuidesColor.get_popup().get_contents_minimum_size() * content_scale_factor + clear() reset_view() if mm_globals.has_config("preview"+config_var_suffix+"_view_mode"): diff --git a/material_maker/panels/preview_3d/mesh_config_popup.gd b/material_maker/panels/preview_3d/mesh_config_popup.gd index e1e387c43..d5ca6e32f 100644 --- a/material_maker/panels/preview_3d/mesh_config_popup.gd +++ b/material_maker/panels/preview_3d/mesh_config_popup.gd @@ -3,6 +3,8 @@ extends PopupPanel var mesh : MeshInstance3D func _ready() -> void: + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = get_contents_minimum_size() * content_scale_factor %ScaleLinked.icon = get_theme_icon("link", "MM_Icons") func configure_mesh(m : MeshInstance3D) -> void: @@ -32,13 +34,13 @@ func configure_mesh(m : MeshInstance3D) -> void: %Parameters.add_child(float_edit) float_edit.value_changed.connect(mesh.set_parameter.bind(p.name)) - popup(Rect2(get_mouse_position(), $VBoxContainer.get_minimum_size())) + popup(Rect2(get_mouse_position()*content_scale_factor, $VBoxContainer.get_minimum_size()*content_scale_factor)) func _on_scale_linked_toggled(toggled_on: bool) -> void: %UV_Scale_Y.visible = not toggled_on _on_UV_value_changed(%UV_Scale_X.value) - size = $VBoxContainer.get_minimum_size() + size = ($VBoxContainer.get_minimum_size() + Vector2(10,0)) * content_scale_factor func _on_MeshConfiguration_popup_hide(): diff --git a/material_maker/panels/preview_3d/mesh_config_popup.tscn b/material_maker/panels/preview_3d/mesh_config_popup.tscn index 64e8376df..658bc5565 100644 --- a/material_maker/panels/preview_3d/mesh_config_popup.tscn +++ b/material_maker/panels/preview_3d/mesh_config_popup.tscn @@ -4,10 +4,8 @@ [ext_resource type="Script" uid="uid://blmq2gm7dwr3k" path="res://material_maker/panels/preview_3d/mesh_config_popup.gd" id="2"] [node name="MeshConfiguration" type="PopupPanel"] -transparent_bg = true size = Vector2i(259, 128) visible = true -transparent = true script = ExtResource("2") [node name="VBoxContainer" type="VBoxContainer" parent="."] @@ -16,8 +14,8 @@ anchor_right = 1.0 anchor_bottom = 1.0 offset_left = 4.0 offset_top = 4.0 -offset_right = 255.0 -offset_bottom = 124.0 +offset_right = -4.0 +offset_bottom = -4.0 [node name="Panel" type="PanelContainer" parent="VBoxContainer"] layout_mode = 2 @@ -84,6 +82,7 @@ text = "Tesselated" [node name="Tesselated" type="CheckBox" parent="VBoxContainer/Parameters"] unique_name_in_owner = true layout_mode = 2 +size_flags_horizontal = 0 tooltip_text = "If tesselation is enabled, the mesh will be subdivided, which is necessary for materials that use vertex displacement." [connection signal="popup_hide" from="." to="." method="_on_MeshConfiguration_popup_hide"] diff --git a/material_maker/tools/share/login_dialog.gd b/material_maker/tools/share/login_dialog.gd index 403eac91e..aca0c3b1a 100644 --- a/material_maker/tools/share/login_dialog.gd +++ b/material_maker/tools/share/login_dialog.gd @@ -5,6 +5,7 @@ signal return_status(status) func _ready(): + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor await get_tree().process_frame _on_MarginContainer_minimum_size_changed() @@ -35,7 +36,7 @@ func ask(user : String, password : String) -> Dictionary: return {} func _on_MarginContainer_minimum_size_changed(): - size = $MarginContainer.get_minimum_size() + size = $MarginContainer.get_minimum_size() * content_scale_factor func _on_RegisterButton_pressed(): OS.shell_open(MMPaths.WEBSITE_ADDRESS+"/register") diff --git a/material_maker/tools/share/share_button.gd b/material_maker/tools/share/share_button.gd index d19a6b144..062b6e274 100644 --- a/material_maker/tools/share/share_button.gd +++ b/material_maker/tools/share/share_button.gd @@ -138,6 +138,8 @@ func find_in_parameter_values(node : Dictionary, keywords : Array) -> bool: func send_asset(asset_type : String, asset_data : Dictionary, preview_textures : Array[Texture2D], preview_texture_names : Array[String] = []) -> void: var data : Dictionary = { type=asset_type, previews=preview_textures, preview_names=preview_texture_names, licenses=licenses, my_assets=my_assets } var upload_dialog = load("res://material_maker/tools/share/upload_dialog.tscn").instantiate() + upload_dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + upload_dialog.min_size = Vector2(600, 500) * upload_dialog.content_scale_factor var asset_info = await upload_dialog.ask(data) if asset_info.is_empty(): return diff --git a/material_maker/widgets/code_editor/code_editor.gd b/material_maker/widgets/code_editor/code_editor.gd index e99c848dd..a421c7749 100644 --- a/material_maker/widgets/code_editor/code_editor.gd +++ b/material_maker/widgets/code_editor/code_editor.gd @@ -22,8 +22,13 @@ const FUNCTIONS : Array[String] = [ "radians", "degrees", "sin", "cos", "tan", " "smoothstep", "length", "distance", "dot", "cross", "normalize" ] +func _context_menu_about_to_popup() -> void: + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + get_menu().position = get_window().position + Vector2i( + get_global_mouse_position() * content_scale_factor) func _ready(): + get_menu().about_to_popup.connect(_context_menu_about_to_popup) for t in KEYWORDS: syntax_highlighter.add_keyword_color(t, Color(1.0, 0.6, 0.6)) for t in TYPES: diff --git a/material_maker/widgets/color_picker_button/color_picker_button.gd b/material_maker/widgets/color_picker_button/color_picker_button.gd index fa241a357..4b44fbcec 100644 --- a/material_maker/widgets/color_picker_button/color_picker_button.gd +++ b/material_maker/widgets/color_picker_button/color_picker_button.gd @@ -6,6 +6,8 @@ signal color_changed_undo(c, previous) func _ready(): + get_popup().content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + get_popup().min_size = get_popup().get_contents_minimum_size() * get_popup().content_scale_factor custom_minimum_size = Vector2(24, 24) connect("color_changed",Callable(self,"on_color_changed")) connect("picker_created",Callable(self,"on_picker_created")) diff --git a/material_maker/widgets/curve_edit/curve_edit.gd b/material_maker/widgets/curve_edit/curve_edit.gd index 2a02324e1..d823181fb 100644 --- a/material_maker/widgets/curve_edit/curve_edit.gd +++ b/material_maker/widgets/curve_edit/curve_edit.gd @@ -16,6 +16,9 @@ func set_value(v) -> void: func _on_CurveEdit_pressed(): var dialog = preload("res://material_maker/widgets/curve_edit/curve_dialog.tscn").instantiate() + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.content_scale_factor = content_scale_factor + dialog.min_size = Vector2(500, 500)*content_scale_factor mm_globals.main_window.add_dialog(dialog) dialog.connect("curve_changed",Callable(self,"on_value_changed")) var new_curve = await dialog.edit_curve(value) diff --git a/material_maker/widgets/desc_button/desc_button.gd b/material_maker/widgets/desc_button/desc_button.gd index d83c23fc7..b0abb8f4f 100644 --- a/material_maker/widgets/desc_button/desc_button.gd +++ b/material_maker/widgets/desc_button/desc_button.gd @@ -19,6 +19,8 @@ func update_tooltip() -> void: func _on_Button_pressed() -> void: var dialog = preload("res://material_maker/windows/desc_dialog/desc_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(350, 150) * dialog.content_scale_factor add_child(dialog) var result = await dialog.edit_descriptions(description_type, short_description, long_description) short_description = result[0] diff --git a/material_maker/widgets/float_edit/expression_editor.gd b/material_maker/widgets/float_edit/expression_editor.gd index 62641c1fe..2891823a3 100644 --- a/material_maker/widgets/float_edit/expression_editor.gd +++ b/material_maker/widgets/float_edit/expression_editor.gd @@ -8,8 +8,16 @@ var accept_empty : bool = false @onready var editor = $MarginContainer/VBoxContainer/TextEdit @onready var parser = load("res://addons/material_maker/parser/glsl_parser.gd").new() +func _context_menu_about_to_popup(context_menu): + context_menu.position = get_window().position + Vector2i( + get_mouse_position() * mm_globals.main_window.get_window().content_scale_factor) + func _ready(): - pass # Replace with function body. + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(300, 100) * content_scale_factor + + editor.get_menu().about_to_popup.connect( + _context_menu_about_to_popup.bind(editor.get_menu())) func edit_parameter(wt : String, value : String, o : Object, m : String, ep : Array = [], ae : bool = false): object = o diff --git a/material_maker/widgets/gradient_editor/gradient_edit.gd b/material_maker/widgets/gradient_editor/gradient_edit.gd index 9ce62e83e..7b13736b7 100644 --- a/material_maker/widgets/gradient_editor/gradient_edit.gd +++ b/material_maker/widgets/gradient_editor/gradient_edit.gd @@ -117,10 +117,15 @@ func select_color(cursor:GradientEditCursor) -> void: var color_picker := color_picker_popup.get_node("ColorPicker") color_picker.color = cursor.color color_picker.color_changed.connect(cursor.set_cursor_color) + + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + color_picker_popup.content_scale_factor = content_scale_factor + color_picker_popup.min_size = color_picker_popup.get_contents_minimum_size() * content_scale_factor var _scale := get_global_transform().get_scale() - color_picker_popup.position.x = global_position.x + size.x*_scale.x + 10 - color_picker_popup.position.y = global_position.y + + color_picker_popup.position.x = (global_position.x + size.x*_scale.x) * content_scale_factor + color_picker_popup.position.y = global_position.y * content_scale_factor color_picker_popup.position += get_window().position color_picker_popup.popup_hide.connect(color_picker_popup.queue_free) diff --git a/material_maker/widgets/graph_tree/graph_tree.gd b/material_maker/widgets/graph_tree/graph_tree.gd index d2bd8a1c3..55c26ce80 100644 --- a/material_maker/widgets/graph_tree/graph_tree.gd +++ b/material_maker/widgets/graph_tree/graph_tree.gd @@ -4,6 +4,10 @@ signal item_icon_double_clicked(generator) @onready var tree = $Tree +func _ready() -> void: + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(500, 500) * content_scale_factor + func init(graph_name : String, generator : MMGenGraph) -> void: tree.clear() var root : TreeItem = tree.create_item(null) diff --git a/material_maker/widgets/graph_tree/graph_tree.tscn b/material_maker/widgets/graph_tree/graph_tree.tscn index 983209a1f..0f69a457c 100644 --- a/material_maker/widgets/graph_tree/graph_tree.tscn +++ b/material_maker/widgets/graph_tree/graph_tree.tscn @@ -52,14 +52,14 @@ Tree/styles/title_button_normal = null Tree/styles/title_button_pressed = null [node name="GraphTree" type="Popup"] -offset_right = 335.0 -offset_bottom = 339.0 script = ExtResource("1") [node name="Tree" type="Tree" parent="."] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 theme = SubResource("2") +[connection signal="ready" from="." to="." method="_ready"] [connection signal="item_activated" from="Tree" to="." method="_on_Tree_item_double_clicked"] [connection signal="item_icon_double_clicked" from="Tree" to="." method="_on_Tree_item_double_clicked"] diff --git a/material_maker/widgets/lattice_edit/lattice_dialog.gd b/material_maker/widgets/lattice_edit/lattice_dialog.gd index adaf98459..3dfcda0fa 100644 --- a/material_maker/widgets/lattice_edit/lattice_dialog.gd +++ b/material_maker/widgets/lattice_edit/lattice_dialog.gd @@ -10,7 +10,8 @@ signal return_lattice(lattice) func _ready(): - min_size = $VBoxContainer.get_combined_minimum_size() + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = $VBoxContainer.get_combined_minimum_size() * content_scale_factor func set_closed(c : bool = true): closed = c diff --git a/material_maker/widgets/pixels_edit/pixels_edit.gd b/material_maker/widgets/pixels_edit/pixels_edit.gd index be9204c8c..2ceb8be18 100644 --- a/material_maker/widgets/pixels_edit/pixels_edit.gd +++ b/material_maker/widgets/pixels_edit/pixels_edit.gd @@ -21,6 +21,8 @@ func set_value(v) -> void: func _on_PixelsEdit_pressed(): var dialog = preload("res://material_maker/widgets/pixels_edit/pixels_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(500, 500) * dialog.content_scale_factor mm_globals.main_window.add_dialog(dialog) dialog.pixels_changed.connect(self.on_value_changed) var new_pixels = await dialog.edit_pixels(value) diff --git a/material_maker/widgets/polygon_edit/polygon_edit.gd b/material_maker/widgets/polygon_edit/polygon_edit.gd index 1ea6d4d81..e510a9023 100644 --- a/material_maker/widgets/polygon_edit/polygon_edit.gd +++ b/material_maker/widgets/polygon_edit/polygon_edit.gd @@ -21,6 +21,8 @@ func set_value(v) -> void: func _on_PolygonEdit_pressed(): var dialog = preload("res://material_maker/widgets/polygon_edit/polygon_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(500, 500) * dialog.content_scale_factor dialog.set_closed(closed) mm_globals.main_window.add_dialog(dialog) dialog.polygon_changed.connect(self.on_value_changed) diff --git a/material_maker/widgets/render_counter/render_counter.gd b/material_maker/widgets/render_counter/render_counter.gd index 51f4cfeac..e048c9a75 100644 --- a/material_maker/widgets/render_counter/render_counter.gd +++ b/material_maker/widgets/render_counter/render_counter.gd @@ -156,5 +156,5 @@ func _on_MaxBufferSize_id_pressed(id): func _on_RenderCounter_gui_input(event): if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: - menu.position = get_global_mouse_position() + menu.position = get_global_mouse_position() * mm_globals.main_window.get_window().content_scale_factor menu.popup() diff --git a/material_maker/widgets/splines_edit/splines_editor.gd b/material_maker/widgets/splines_edit/splines_editor.gd index e1b0a304e..3025d5383 100644 --- a/material_maker/widgets/splines_edit/splines_editor.gd +++ b/material_maker/widgets/splines_edit/splines_editor.gd @@ -31,6 +31,11 @@ func _ready(): if get_parent().has_method("add_menu_bar"): menu_bar.get_parent().remove_child(menu_bar) get_parent().add_menu_bar(menu_bar, self) + + await get_tree().process_frame + get_window().content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + get_window().min_size = get_window().get_contents_minimum_size() * get_window().content_scale_factor + get_window().popup_centered() super._ready() update_controls() diff --git a/material_maker/windows/about/about.gd b/material_maker/windows/about/about.gd index 696c40f15..72aa8bc4a 100644 --- a/material_maker/windows/about/about.gd +++ b/material_maker/windows/about/about.gd @@ -44,6 +44,8 @@ const PATRONS2 = [ ] func _ready() -> void: + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(600, 500) * content_scale_factor if Engine.is_editor_hint(): application_name_label.text = "Material Maker" else: diff --git a/material_maker/windows/desc_dialog/desc_dialog.gd b/material_maker/windows/desc_dialog/desc_dialog.gd index 02defa9e3..9257d41a0 100644 --- a/material_maker/windows/desc_dialog/desc_dialog.gd +++ b/material_maker/windows/desc_dialog/desc_dialog.gd @@ -28,3 +28,16 @@ func _on_WindowDialog_popup_hide(): func _on_WindowDialog_minimum_size_changed(): size = $VBoxContainer.size+Vector2(4, 4) + +func _context_menu_about_to_popup(context_menu : PopupMenu) -> void: + context_menu.position = get_window().position+ Vector2i( + get_mouse_position() * get_window().content_scale_factor) + +func _on_ready() -> void: + var context_menus : Array[PopupMenu] = [ + $VBoxContainer/LongDesc.get_menu(), + $VBoxContainer/HBoxContainer/ShortDesc.get_menu() + ] + for context_menu in context_menus: + context_menu.about_to_popup.connect( + _context_menu_about_to_popup.bind(context_menu)) diff --git a/material_maker/windows/desc_dialog/desc_dialog.tscn b/material_maker/windows/desc_dialog/desc_dialog.tscn index 71771ad56..01f52546b 100644 --- a/material_maker/windows/desc_dialog/desc_dialog.tscn +++ b/material_maker/windows/desc_dialog/desc_dialog.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://dqsbfik7ccygu"] -[ext_resource type="Script" path="res://material_maker/windows/desc_dialog/desc_dialog.gd" id="1"] +[ext_resource type="Script" uid="uid://3rcb1a63iu8s" path="res://material_maker/windows/desc_dialog/desc_dialog.gd" id="1"] [node name="Window" type="Window"] position = Vector2i(0, 36) @@ -50,5 +50,6 @@ size_flags_horizontal = 3 text = "Cancel" [connection signal="close_requested" from="." to="." method="_on_Cancel_pressed"] +[connection signal="ready" from="." to="." method="_on_ready"] [connection signal="pressed" from="VBoxContainer/HBoxContainer2/OK" to="." method="_on_OK_pressed"] [connection signal="pressed" from="VBoxContainer/HBoxContainer2/Cancel" to="." method="_on_Cancel_pressed"] diff --git a/material_maker/windows/environment_editor/environment_editor.gd b/material_maker/windows/environment_editor/environment_editor.gd index 99a4bc303..8882dfb1e 100644 --- a/material_maker/windows/environment_editor/environment_editor.gd +++ b/material_maker/windows/environment_editor/environment_editor.gd @@ -16,6 +16,15 @@ var new_environment_icon = preload("res://material_maker/windows/environment_edi var current_environment = -1 func _ready(): + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(900, 600) * content_scale_factor + + for color_picker in $Main/HSplitContainer/UI.get_children(): + if color_picker is ColorPickerButton: + var picker = color_picker.get_popup() + picker.content_scale_factor = content_scale_factor + picker.min_size = picker.get_contents_minimum_size() * content_scale_factor + popup_centered() _on_ViewportContainer_resized() connect_controls() diff --git a/material_maker/windows/export_animation/export_animation.gd b/material_maker/windows/export_animation/export_animation.gd index d5c620d2e..e81ffe9ff 100644 --- a/material_maker/windows/export_animation/export_animation.gd +++ b/material_maker/windows/export_animation/export_animation.gd @@ -27,7 +27,8 @@ const BUFFER_NAMES = [ "export_animation_buffer_begin", "export_animation_buffer func _ready(): - size = $VBox.get_combined_minimum_size() + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = $VBox.get_combined_minimum_size() * content_scale_factor for i in range(BUFFER_NAMES.size()): mm_deps.create_buffer(BUFFER_NAMES[i], self) diff --git a/material_maker/windows/export_taa/export_taa.gd b/material_maker/windows/export_taa/export_taa.gd index a189cb2ac..4b2568b0a 100644 --- a/material_maker/windows/export_taa/export_taa.gd +++ b/material_maker/windows/export_taa/export_taa.gd @@ -11,13 +11,13 @@ var force_update : bool = false var render_size : Vector2i = Vector2i(512, 512) func _ready(): - min_size = $VBoxContainer.get_combined_minimum_size() + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = $VBoxContainer.get_combined_minimum_size() * content_scale_factor acc_texture = MMTexture.new() avg_texture = MMTexture.new() accumulate_render = MMComputeShader.new() divide_render = MMComputeShader.new() _on_denoise_item_selected(0) - $VBoxContainer.size = size func set_source(generator, output): var context : MMGenContext = MMGenContext.new() @@ -78,9 +78,6 @@ func _on_Export_pressed(): if files.size() == 1: await avg_texture.save_to_file(files[0]) -func _on_size_changed(): - $VBoxContainer.set_size(size) - func _on_denoise_item_selected(index): force_update = true const HIDE_NODES : Array[PackedStringArray] = [ diff --git a/material_maker/windows/file_dialog/file_dialog.gd b/material_maker/windows/file_dialog/file_dialog.gd index 4a2bdecd8..de77153cc 100644 --- a/material_maker/windows/file_dialog/file_dialog.gd +++ b/material_maker/windows/file_dialog/file_dialog.gd @@ -1,19 +1,35 @@ extends FileDialog +var _content_scale_factor: float = 1.0 var left_panel = null var volume_option = null - const DIALOG_HACK : bool = true - signal return_paths(path_list) +func _context_menu_about_to_popup(context_menu : PopupMenu): + context_menu.position = get_window().position + Vector2i( + get_mouse_position() * _content_scale_factor) func _ready() -> void: - content_scale_factor = mm_globals.main_window.get_window().content_scale_factor - min_size = content_scale_factor*Vector2(500, 500) + _content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + content_scale_factor = _content_scale_factor + min_size = _content_scale_factor * Vector2(650, 500) + + for child in get_children(): + if child is PopupMenu: + child.about_to_popup.connect(_context_menu_about_to_popup.bind(child)) + + for hbox in get_vbox().get_children(): + if hbox is HBoxContainer: + for line_edit in hbox.get_children(): + if line_edit is LineEdit: + var context_menu : PopupMenu = line_edit.get_menu() + context_menu.about_to_popup.connect( + _context_menu_about_to_popup.bind(context_menu)) + if DIALOG_HACK: var vbox = get_vbox() var hbox = HSplitContainer.new() @@ -64,3 +80,16 @@ func select_files() -> Array: func add_favorite(): if DIALOG_HACK: left_panel.add_favorite(get_full_current_dir()) + +func _on_child_entered_tree(node: Node) -> void: + if node is ConfirmationDialog or node is AcceptDialog: + node.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + var min_size_scale = Vector2(0,0) + match node.title: + "Alert!": + min_size_scale = Vector2(300,60) + "Create Folder": + min_size_scale = Vector2(200,100) + "Please Confirm...": + min_size_scale = Vector2(430,100) + node.min_size = min_size_scale * node.content_scale_factor diff --git a/material_maker/windows/file_dialog/file_dialog.tscn b/material_maker/windows/file_dialog/file_dialog.tscn index 6c14a42fc..0fe6e1a8f 100644 --- a/material_maker/windows/file_dialog/file_dialog.tscn +++ b/material_maker/windows/file_dialog/file_dialog.tscn @@ -14,6 +14,7 @@ show_hidden_files = true script = ExtResource("1") [connection signal="canceled" from="." to="." method="_on_FileDialog_popup_hide"] +[connection signal="child_entered_tree" from="." to="." method="_on_child_entered_tree"] [connection signal="close_requested" from="." to="." method="_on_FileDialog_popup_hide"] [connection signal="dir_selected" from="." to="." method="_on_FileDialog_dir_selected"] [connection signal="file_selected" from="." to="." method="_on_FileDialog_file_selected"] diff --git a/material_maker/windows/line_dialog/line_dialog.gd b/material_maker/windows/line_dialog/line_dialog.gd index 441be66a1..ffeb1b5e5 100644 --- a/material_maker/windows/line_dialog/line_dialog.gd +++ b/material_maker/windows/line_dialog/line_dialog.gd @@ -33,3 +33,12 @@ func enter_text(window_title : String, label : String, value : String) -> Dictio func _on_VBoxContainer_minimum_size_changed(): size = $VBoxContainer.get_minimum_size()+Vector2(20, 4) + +func _context_menu_about_to_popup(context_menu : PopupMenu) -> void: + context_menu.position = get_window().position + Vector2i( + get_mouse_position() * content_scale_factor) + +func _on_ready() -> void: + var line_edit_context : PopupMenu = $VBoxContainer/LineEdit.get_menu() + line_edit_context.about_to_popup.connect( + _context_menu_about_to_popup.bind(line_edit_context)) diff --git a/material_maker/windows/line_dialog/line_dialog.tscn b/material_maker/windows/line_dialog/line_dialog.tscn index 35e755676..5bba206de 100644 --- a/material_maker/windows/line_dialog/line_dialog.tscn +++ b/material_maker/windows/line_dialog/line_dialog.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://c63kkteeal25t"] -[ext_resource type="Script" path="res://material_maker/windows/line_dialog/line_dialog.gd" id="1"] +[ext_resource type="Script" uid="uid://brjipglk57vch" path="res://material_maker/windows/line_dialog/line_dialog.gd" id="1"] [node name="LineDialog" type="Window"] script = ExtResource("1") @@ -39,6 +39,7 @@ layout_mode = 2 text = "Cancel" [connection signal="close_requested" from="." to="." method="_on_Cancel_pressed"] +[connection signal="ready" from="." to="." method="_on_ready"] [connection signal="minimum_size_changed" from="VBoxContainer" to="." method="_on_VBoxContainer_minimum_size_changed"] [connection signal="text_submitted" from="VBoxContainer/LineEdit" to="." method="_on_LineEdit_text_entered"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/OK" to="." method="_on_OK_pressed"] diff --git a/material_maker/windows/material_editor/export_editor.gd b/material_maker/windows/material_editor/export_editor.gd index 8c6eed5bd..b81998e91 100644 --- a/material_maker/windows/material_editor/export_editor.gd +++ b/material_maker/windows/material_editor/export_editor.gd @@ -25,10 +25,24 @@ const GEN_MATERIAL = preload("res://addons/material_maker/engine/nodes/gen_mater signal node_changed(model_data) signal editor_window_closed +func _context_menu_about_to_popup(context_menu : PopupMenu) -> void: + context_menu.position = get_window().position + Vector2i( + get_mouse_position() * content_scale_factor) # Called when the node enters the scene tree for the first time. func _ready(): export_file_expression.parent_dialog = self + var context_menus : Array[PopupMenu] = [ + export_custom_script.get_menu(), + export_file_template.get_menu(), + export_file_name.get_menu(), + export_file_conditions.get_menu(), + export_file_expression.get_menu(), + export_extension_edit.get_menu(), + ] + for context_menu in context_menus: + context_menu.about_to_popup.connect( + _context_menu_about_to_popup.bind(context_menu)) func update_export_list() -> void: export_target.clear() @@ -106,6 +120,8 @@ func select_file(i : int) -> void: func _on_Create_Export_pressed(): var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("Export", "Enter the export target name", "") if status.ok and get_export_index(status.text) == -1: @@ -161,6 +177,8 @@ func _on_Rename_Export_pressed(): return var old_export : String = export_target.get_item_text(old_export_index) var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("Export", "Enter the export target name", old_export) if status.ok and get_export_index(status.text) == -1: @@ -186,6 +204,8 @@ func _on_Duplicate_Export_pressed(): return var old_export : String = export_target.get_item_text(old_export_index) var dialog = preload("res://material_maker/windows/line_dialog/line_dialog.tscn").instantiate() + dialog.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + dialog.min_size = Vector2(250, 90) * dialog.content_scale_factor add_child(dialog) var status = await dialog.enter_text("Export", "Enter the export target name", old_export) if status.ok and get_export_index(status.text) == -1: diff --git a/material_maker/windows/new_painter/new_painter.gd b/material_maker/windows/new_painter/new_painter.gd index 6d94daec6..8e953388c 100644 --- a/material_maker/windows/new_painter/new_painter.gd +++ b/material_maker/windows/new_painter/new_painter.gd @@ -18,6 +18,8 @@ signal return_status(status : Dictionary) func _ready(): + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + min_size = Vector2(500, 300) * content_scale_factor if mesh_material: mesh_instance.set_surface_override_material(0, mesh_material) diff --git a/material_maker/windows/node_editor/node_editor.gd b/material_maker/windows/node_editor/node_editor.gd index 6ce66997d..50c303854 100644 --- a/material_maker/windows/node_editor/node_editor.gd +++ b/material_maker/windows/node_editor/node_editor.gd @@ -20,9 +20,26 @@ const OutputEditor = preload("res://material_maker/windows/node_editor/output.ts signal node_changed(model_data) signal editor_window_closed +func _context_menu_about_to_popup(context_menu : PopupMenu) -> void: + context_menu.position = get_window().position + Vector2i( + get_mouse_position() * content_scale_factor) + +func _on_ready() -> void: + await get_tree().process_frame + var context_menus : Array[PopupMenu] = [ + $"Sizer/TabBar/Global Functions/Includes/Includes".get_menu(), + $Sizer/TabBar/General/Name/Name.get_menu(), + ] + for menu in context_menus: + menu.about_to_popup.connect(_context_menu_about_to_popup.bind(menu)) func add_item(parent, scene) -> Node: var object = scene.instantiate() + if object is HBoxContainer: + for child in object.get_children(): + if child is LineEdit: + child.get_menu().about_to_popup.connect( + _context_menu_about_to_popup.bind(child.get_menu())) parent.add_child(object) parent.move_child(object, parent.get_child_count()-2) return object diff --git a/material_maker/windows/node_editor/node_editor.tscn b/material_maker/windows/node_editor/node_editor.tscn index 3427695dc..6548e7ba5 100644 --- a/material_maker/windows/node_editor/node_editor.tscn +++ b/material_maker/windows/node_editor/node_editor.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=9 format=3 uid="uid://cbpg2wtvf7fc1"] -[ext_resource type="Script" path="res://material_maker/windows/node_editor/node_editor.gd" id="1"] -[ext_resource type="Script" path="res://material_maker/windows/node_editor/node_editor_item_list.gd" id="2"] +[ext_resource type="Script" uid="uid://ce61t4udbuwna" path="res://material_maker/windows/node_editor/node_editor.gd" id="1"] +[ext_resource type="Script" uid="uid://c53hfh1qg7i8o" path="res://material_maker/windows/node_editor/node_editor_item_list.gd" id="2"] [ext_resource type="Texture2D" uid="uid://c0j4px4n72di5" path="res://material_maker/icons/icons.tres" id="3"] [ext_resource type="PackedScene" uid="uid://buj231c2gxm4o" path="res://material_maker/widgets/desc_button/desc_button.tscn" id="4"] [ext_resource type="PackedScene" uid="uid://ddgb7ul6fncx8" path="res://material_maker/widgets/code_editor/code_editor.tscn" id="5_l5uxq"] @@ -191,6 +191,7 @@ layout_mode = 2 text = "Cancel" [connection signal="close_requested" from="." to="." method="_on_Cancel_pressed"] +[connection signal="ready" from="." to="." method="_on_ready"] [connection signal="minimum_size_changed" from="Sizer" to="." method="_on_Sizer_minimum_size_changed"] [connection signal="pressed" from="Sizer/TabBar/General/Parameters/Sizer/AddParameter" to="." method="_on_AddParameter_pressed"] [connection signal="pressed" from="Sizer/TabBar/General/Inputs/Sizer/AddInput" to="." method="_on_AddInput_pressed"] diff --git a/material_maker/windows/node_editor/parameter.gd b/material_maker/windows/node_editor/parameter.gd index b2eb10185..d15ece24e 100644 --- a/material_maker/windows/node_editor/parameter.gd +++ b/material_maker/windows/node_editor/parameter.gd @@ -4,6 +4,11 @@ func _ready() -> void: $Type.clear() for t in $Types.get_children(): $Type.add_item(t.name) + for child in $Types/color.get_children(): + if child is ColorPickerButton: + var picker_popup = child.get_popup() + picker_popup.content_scale_factor = mm_globals.main_window.get_window().content_scale_factor + picker_popup.min_size = picker_popup.get_contents_minimum_size() * picker_popup.content_scale_factor _on_Type_item_selected($Type.selected) func update_up_down_button() -> void: diff --git a/material_maker/windows/node_editor/parameter_enum.gd b/material_maker/windows/node_editor/parameter_enum.gd index f3c2312c7..a177982fd 100644 --- a/material_maker/windows/node_editor/parameter_enum.gd +++ b/material_maker/windows/node_editor/parameter_enum.gd @@ -47,10 +47,13 @@ func update_enum_list() -> void: func _on_EnumValues_item_selected(id) -> void: id = $EnumValues.get_item_id(id) + var content_scale_factor = mm_globals.main_window.get_window().content_scale_factor if id >= 0 and id < enum_values.size(): enum_current = id elif id == ENUM_EDIT: var dialog = preload("res://material_maker/windows/node_editor/enum_editor.tscn").instantiate() + dialog.content_scale_factor = content_scale_factor + dialog.min_size = Vector2(250, 90) * content_scale_factor var v = enum_values[enum_current] add_child(dialog) dialog.set_value(v.name, v.value) @@ -59,6 +62,8 @@ func _on_EnumValues_item_selected(id) -> void: dialog.popup_centered() elif id == ENUM_ADD: var dialog = preload("res://material_maker/windows/node_editor/enum_editor.tscn").instantiate() + dialog.content_scale_factor = content_scale_factor + dialog.min_size = Vector2(250, 90) * content_scale_factor add_child(dialog) dialog.connect("ok", Callable(self, "update_enum_value").bind(-1)) dialog.connect("popup_hide", Callable(dialog, "queue_free")) diff --git a/material_maker/windows/preferences/preferences.gd b/material_maker/windows/preferences/preferences.gd index 438c370e4..5068fc612 100644 --- a/material_maker/windows/preferences/preferences.gd +++ b/material_maker/windows/preferences/preferences.gd @@ -14,7 +14,7 @@ func edit_preferences(c : ConfigFile) -> void: main_window.add_dialog(self) config_changed.connect(main_window.on_config_changed) update_controls(self) - size = $VBoxContainer.get_combined_minimum_size() + size = $VBoxContainer.get_combined_minimum_size() * content_scale_factor popup_centered(size) func update_controls(p : Node) -> void: @@ -47,7 +47,7 @@ func _on_Preferences_about_to_show(): _on_VBoxContainer_minimum_size_changed() func _on_VBoxContainer_minimum_size_changed(): - min_size = $VBoxContainer.get_combined_minimum_size() + min_size = $VBoxContainer.get_combined_minimum_size() * content_scale_factor size = min_size diff --git a/material_maker/windows/progress_window/progress_window.gd b/material_maker/windows/progress_window/progress_window.gd index 9710c2133..6d0b13b36 100644 --- a/material_maker/windows/progress_window/progress_window.gd +++ b/material_maker/windows/progress_window/progress_window.gd @@ -1,6 +1,7 @@ extends Popup func _ready() -> void: + content_scale_factor = mm_globals.main_window.get_window().content_scale_factor popup_centered() func set_text(t) -> void: