mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting style.ItemInnerSpacing.x worth of trailing spacing.
This commit is contained in:
		@@ -41,6 +41,8 @@ Other Changes:
 | 
				
			|||||||
- Columns: Fixed Selectable with SpanAllColumns flag from creating an extraneous draw command. (#125)
 | 
					- Columns: Fixed Selectable with SpanAllColumns flag from creating an extraneous draw command. (#125)
 | 
				
			||||||
- Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect
 | 
					- Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect
 | 
				
			||||||
  but it breaks existing some layout patterns. Will return back to it when we expose Separator flags.
 | 
					  but it breaks existing some layout patterns. Will return back to it when we expose Separator flags.
 | 
				
			||||||
 | 
					- Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting
 | 
				
			||||||
 | 
					  style.ItemInnerSpacing.x worth of trailing spacing.
 | 
				
			||||||
- Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple
 | 
					- Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple
 | 
				
			||||||
  times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000").
 | 
					  times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000").
 | 
				
			||||||
  It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here.
 | 
					  It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2068,15 +2068,22 @@ bool ImGui::DragScalarN(const char* label, ImGuiDataType data_type, void* v, int
 | 
				
			|||||||
    for (int i = 0; i < components; i++)
 | 
					    for (int i = 0; i < components; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        PushID(i);
 | 
					        PushID(i);
 | 
				
			||||||
        value_changed |= DragScalar("", data_type, v, v_speed, v_min, v_max, format, power);
 | 
					        if (i > 0)
 | 
				
			||||||
            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
					            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        value_changed |= DragScalar("", data_type, v, v_speed, v_min, v_max, format, power);
 | 
				
			||||||
        PopID();
 | 
					        PopID();
 | 
				
			||||||
        PopItemWidth();
 | 
					        PopItemWidth();
 | 
				
			||||||
        v = (void*)((char*)v + type_size);
 | 
					        v = (void*)((char*)v + type_size);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    PopID();
 | 
					    PopID();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TextEx(label, FindRenderedTextEnd(label));
 | 
					    const char* label_end = FindRenderedTextEnd(label);
 | 
				
			||||||
 | 
					    if (label != label_end)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        TextEx(label, label_end);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EndGroup();
 | 
					    EndGroup();
 | 
				
			||||||
    return value_changed;
 | 
					    return value_changed;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -2516,15 +2523,22 @@ bool ImGui::SliderScalarN(const char* label, ImGuiDataType data_type, void* v, i
 | 
				
			|||||||
    for (int i = 0; i < components; i++)
 | 
					    for (int i = 0; i < components; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        PushID(i);
 | 
					        PushID(i);
 | 
				
			||||||
        value_changed |= SliderScalar("", data_type, v, v_min, v_max, format, power);
 | 
					        if (i > 0)
 | 
				
			||||||
            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
					            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        value_changed |= SliderScalar("", data_type, v, v_min, v_max, format, power);
 | 
				
			||||||
        PopID();
 | 
					        PopID();
 | 
				
			||||||
        PopItemWidth();
 | 
					        PopItemWidth();
 | 
				
			||||||
        v = (void*)((char*)v + type_size);
 | 
					        v = (void*)((char*)v + type_size);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    PopID();
 | 
					    PopID();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TextEx(label, FindRenderedTextEnd(label));
 | 
					    const char* label_end = FindRenderedTextEnd(label);
 | 
				
			||||||
 | 
					    if (label != label_end)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        TextEx(label, label_end);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EndGroup();
 | 
					    EndGroup();
 | 
				
			||||||
    return value_changed;
 | 
					    return value_changed;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -2827,8 +2841,13 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_p
 | 
				
			|||||||
            DataTypeApplyOp(data_type, '+', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
 | 
					            DataTypeApplyOp(data_type, '+', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
 | 
				
			||||||
            value_changed = true;
 | 
					            value_changed = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const char* label_end = FindRenderedTextEnd(label);
 | 
				
			||||||
 | 
					        if (label != label_end)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            SameLine(0, style.ItemInnerSpacing.x);
 | 
					            SameLine(0, style.ItemInnerSpacing.x);
 | 
				
			||||||
        TextEx(label, FindRenderedTextEnd(label));
 | 
					            TextEx(label, label_end);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        style.FramePadding = backup_frame_padding;
 | 
					        style.FramePadding = backup_frame_padding;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        PopID();
 | 
					        PopID();
 | 
				
			||||||
@@ -2860,15 +2879,22 @@ bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, in
 | 
				
			|||||||
    for (int i = 0; i < components; i++)
 | 
					    for (int i = 0; i < components; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        PushID(i);
 | 
					        PushID(i);
 | 
				
			||||||
        value_changed |= InputScalar("", data_type, v, step, step_fast, format, flags);
 | 
					        if (i > 0)
 | 
				
			||||||
            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
					            SameLine(0, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        value_changed |= InputScalar("", data_type, v, step, step_fast, format, flags);
 | 
				
			||||||
        PopID();
 | 
					        PopID();
 | 
				
			||||||
        PopItemWidth();
 | 
					        PopItemWidth();
 | 
				
			||||||
        v = (void*)((char*)v + type_size);
 | 
					        v = (void*)((char*)v + type_size);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    PopID();
 | 
					    PopID();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TextEx(label, FindRenderedTextEnd(label));
 | 
					    const char* label_end = FindRenderedTextEnd(label);
 | 
				
			||||||
 | 
					    if (label != label_end)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        SameLine(0.0f, g.Style.ItemInnerSpacing.x);
 | 
				
			||||||
 | 
					        TextEx(label, label_end);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EndGroup();
 | 
					    EndGroup();
 | 
				
			||||||
    return value_changed;
 | 
					    return value_changed;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user