You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Restored auto snapping of controls to pixels, fixes #10847 and probably several more issues. Made it optional in the project settings but defaults to true.
This commit is contained in:
@@ -2269,6 +2269,9 @@ void CanvasItemEditor::_notification(int p_what) {
|
|||||||
|
|
||||||
if (p_what == NOTIFICATION_FIXED_PROCESS) {
|
if (p_what == NOTIFICATION_FIXED_PROCESS) {
|
||||||
|
|
||||||
|
|
||||||
|
EditorNode::get_singleton()->get_scene_root()->set_snap_controls_to_pixels(GLOBAL_GET("gui/common/snap_controls_to_pixels"));
|
||||||
|
|
||||||
List<Node *> &selection = editor_selection->get_selected_node_list();
|
List<Node *> &selection = editor_selection->get_selected_node_list();
|
||||||
|
|
||||||
bool all_control = true;
|
bool all_control = true;
|
||||||
|
|||||||
@@ -1325,6 +1325,7 @@ bool Main::start() {
|
|||||||
int shadow_atlas_q2_subdiv = GLOBAL_GET("rendering/quality/shadow_atlas/quadrant_2_subdiv");
|
int shadow_atlas_q2_subdiv = GLOBAL_GET("rendering/quality/shadow_atlas/quadrant_2_subdiv");
|
||||||
int shadow_atlas_q3_subdiv = GLOBAL_GET("rendering/quality/shadow_atlas/quadrant_3_subdiv");
|
int shadow_atlas_q3_subdiv = GLOBAL_GET("rendering/quality/shadow_atlas/quadrant_3_subdiv");
|
||||||
|
|
||||||
|
|
||||||
sml->get_root()->set_shadow_atlas_size(shadow_atlas_size);
|
sml->get_root()->set_shadow_atlas_size(shadow_atlas_size);
|
||||||
sml->get_root()->set_shadow_atlas_quadrant_subdiv(0, Viewport::ShadowAtlasQuadrantSubdiv(shadow_atlas_q0_subdiv));
|
sml->get_root()->set_shadow_atlas_quadrant_subdiv(0, Viewport::ShadowAtlasQuadrantSubdiv(shadow_atlas_q0_subdiv));
|
||||||
sml->get_root()->set_shadow_atlas_quadrant_subdiv(1, Viewport::ShadowAtlasQuadrantSubdiv(shadow_atlas_q1_subdiv));
|
sml->get_root()->set_shadow_atlas_quadrant_subdiv(1, Viewport::ShadowAtlasQuadrantSubdiv(shadow_atlas_q1_subdiv));
|
||||||
@@ -1333,6 +1334,9 @@ bool Main::start() {
|
|||||||
Viewport::Usage usage = Viewport::Usage(int(GLOBAL_GET("rendering/quality/intended_usage/framebuffer_allocation")));
|
Viewport::Usage usage = Viewport::Usage(int(GLOBAL_GET("rendering/quality/intended_usage/framebuffer_allocation")));
|
||||||
sml->get_root()->set_usage(usage);
|
sml->get_root()->set_usage(usage);
|
||||||
|
|
||||||
|
bool snap_controls = GLOBAL_DEF("gui/common/snap_controls_to_pixels", true);
|
||||||
|
sml->get_root()->set_snap_controls_to_pixels(snap_controls);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
GLOBAL_DEF("display/window/stretch/mode", "disabled");
|
GLOBAL_DEF("display/window/stretch/mode", "disabled");
|
||||||
ProjectSettings::get_singleton()->set_custom_property_info("display/window/stretch/mode", PropertyInfo(Variant::STRING, "display/window/stretch/mode", PROPERTY_HINT_ENUM, "disabled,2d,viewport"));
|
ProjectSettings::get_singleton()->set_custom_property_info("display/window/stretch/mode", PropertyInfo(Variant::STRING, "display/window/stretch/mode", PROPERTY_HINT_ENUM, "disabled,2d,viewport"));
|
||||||
@@ -1342,6 +1346,8 @@ bool Main::start() {
|
|||||||
ProjectSettings::get_singleton()->set_custom_property_info("display/window/stretch/shrink", PropertyInfo(Variant::STRING, "display/window/stretch/shrink", PROPERTY_HINT_RANGE, "1,8,1"));
|
ProjectSettings::get_singleton()->set_custom_property_info("display/window/stretch/shrink", PropertyInfo(Variant::STRING, "display/window/stretch/shrink", PROPERTY_HINT_RANGE, "1,8,1"));
|
||||||
sml->set_auto_accept_quit(GLOBAL_DEF("application/config/auto_accept_quit", true));
|
sml->set_auto_accept_quit(GLOBAL_DEF("application/config/auto_accept_quit", true));
|
||||||
sml->set_quit_on_go_back(GLOBAL_DEF("application/config/quit_on_go_back", true));
|
sml->set_quit_on_go_back(GLOBAL_DEF("application/config/quit_on_go_back", true));
|
||||||
|
GLOBAL_DEF("gui/common/snap_controls_to_pixels", true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String local_game_path;
|
String local_game_path;
|
||||||
|
|||||||
@@ -1249,6 +1249,10 @@ void Control::_size_changed() {
|
|||||||
new_size_cache.height = MAX(minimum_size.height, new_size_cache.height);
|
new_size_cache.height = MAX(minimum_size.height, new_size_cache.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_viewport()->is_snap_controls_to_pixels_enabled()) {
|
||||||
|
new_size_cache =new_size_cache.floor();
|
||||||
|
new_pos_cache = new_pos_cache.floor();
|
||||||
|
}
|
||||||
bool pos_changed = new_pos_cache != data.pos_cache;
|
bool pos_changed = new_pos_cache != data.pos_cache;
|
||||||
bool size_changed = new_size_cache != data.size_cache;
|
bool size_changed = new_size_cache != data.size_cache;
|
||||||
|
|
||||||
|
|||||||
@@ -2578,6 +2578,17 @@ int Viewport::get_render_info(RenderInfo p_info) {
|
|||||||
return VS::get_singleton()->viewport_get_render_info(viewport, VS::ViewportRenderInfo(p_info));
|
return VS::get_singleton()->viewport_get_render_info(viewport, VS::ViewportRenderInfo(p_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Viewport::set_snap_controls_to_pixels(bool p_enable) {
|
||||||
|
|
||||||
|
snap_controls_to_pixels=p_enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Viewport::is_snap_controls_to_pixels_enabled() const {
|
||||||
|
|
||||||
|
return snap_controls_to_pixels;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Viewport::_bind_methods() {
|
void Viewport::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_use_arvr", "use"), &Viewport::set_use_arvr);
|
ClassDB::bind_method(D_METHOD("set_use_arvr", "use"), &Viewport::set_use_arvr);
|
||||||
@@ -2680,6 +2691,9 @@ void Viewport::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_shadow_atlas_size", "size"), &Viewport::set_shadow_atlas_size);
|
ClassDB::bind_method(D_METHOD("set_shadow_atlas_size", "size"), &Viewport::set_shadow_atlas_size);
|
||||||
ClassDB::bind_method(D_METHOD("get_shadow_atlas_size"), &Viewport::get_shadow_atlas_size);
|
ClassDB::bind_method(D_METHOD("get_shadow_atlas_size"), &Viewport::get_shadow_atlas_size);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_snap_controls_to_pixels", "enabled"), &Viewport::set_snap_controls_to_pixels);
|
||||||
|
ClassDB::bind_method(D_METHOD("is_snap_controls_to_pixels_enabled"), &Viewport::is_snap_controls_to_pixels_enabled);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_shadow_atlas_quadrant_subdiv", "quadrant", "subdiv"), &Viewport::set_shadow_atlas_quadrant_subdiv);
|
ClassDB::bind_method(D_METHOD("set_shadow_atlas_quadrant_subdiv", "quadrant", "subdiv"), &Viewport::set_shadow_atlas_quadrant_subdiv);
|
||||||
ClassDB::bind_method(D_METHOD("get_shadow_atlas_quadrant_subdiv", "quadrant"), &Viewport::get_shadow_atlas_quadrant_subdiv);
|
ClassDB::bind_method(D_METHOD("get_shadow_atlas_quadrant_subdiv", "quadrant"), &Viewport::get_shadow_atlas_quadrant_subdiv);
|
||||||
|
|
||||||
@@ -2707,6 +2721,7 @@ void Viewport::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "physics_object_picking"), "set_physics_object_picking", "get_physics_object_picking");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "physics_object_picking"), "set_physics_object_picking", "get_physics_object_picking");
|
||||||
ADD_GROUP("GUI", "gui_");
|
ADD_GROUP("GUI", "gui_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_disable_input"), "set_disable_input", "is_input_disabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_disable_input"), "set_disable_input", "is_input_disabled");
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_snap_controls_to_pixels"), "set_snap_controls_to_pixels", "is_snap_controls_to_pixels_enabled");
|
||||||
ADD_GROUP("Shadow Atlas", "shadow_atlas_");
|
ADD_GROUP("Shadow Atlas", "shadow_atlas_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_atlas_size"), "set_shadow_atlas_size", "get_shadow_atlas_size");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_atlas_size"), "set_shadow_atlas_size", "get_shadow_atlas_size");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_0", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 0);
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_0", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 0);
|
||||||
@@ -2822,6 +2837,8 @@ Viewport::Viewport() {
|
|||||||
usage = USAGE_3D;
|
usage = USAGE_3D;
|
||||||
debug_draw = DEBUG_DRAW_DISABLED;
|
debug_draw = DEBUG_DRAW_DISABLED;
|
||||||
clear_mode = CLEAR_MODE_ALWAYS;
|
clear_mode = CLEAR_MODE_ALWAYS;
|
||||||
|
|
||||||
|
snap_controls_to_pixels = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Viewport::~Viewport() {
|
Viewport::~Viewport() {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* viewport.h */
|
/* viewport.h */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@@ -193,6 +194,8 @@ private:
|
|||||||
bool filter;
|
bool filter;
|
||||||
bool gen_mipmaps;
|
bool gen_mipmaps;
|
||||||
|
|
||||||
|
bool snap_controls_to_pixels;
|
||||||
|
|
||||||
bool physics_object_picking;
|
bool physics_object_picking;
|
||||||
List<Ref<InputEvent> > physics_picking_events;
|
List<Ref<InputEvent> > physics_picking_events;
|
||||||
ObjectID physics_object_capture;
|
ObjectID physics_object_capture;
|
||||||
@@ -463,6 +466,9 @@ public:
|
|||||||
|
|
||||||
int get_render_info(RenderInfo p_info);
|
int get_render_info(RenderInfo p_info);
|
||||||
|
|
||||||
|
void set_snap_controls_to_pixels(bool p_enable);
|
||||||
|
bool is_snap_controls_to_pixels_enabled() const;
|
||||||
|
|
||||||
Viewport();
|
Viewport();
|
||||||
~Viewport();
|
~Viewport();
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user