1511 Commits

Author SHA1 Message Date
Timo Suoranta
40f3f3a2b5
ColorButton, ColorPicker: fixed swatch drawn with a wrong (often zero) alpha inside BeginDisabled(false). (#9511)
Since 19ead810d (#9511), ColorButton() and ColorPicker4() cancel out the
dimming of an enclosing BeginDisabled() by restoring the alpha it saved:

    if (g.DisabledStackSize > 0)
        g.Style.Alpha = g.DisabledAlphaBackup;

DisabledStackSize > 0 means "inside some BeginDisabled() call", not "items
are disabled". BeginDisabled(false) increments DisabledStackSize but does
not write DisabledAlphaBackup, which is only written when a BeginDisabled()
call actually starts disabling. Inside BeginDisabled(false) the swatch
therefore picks up whatever value DisabledAlphaBackup holds from elsewhere:

- 0.0f, its initial value, when no BeginDisabled(true) has run in the
  context yet: the swatch is fully transparent and only its border shows.
- The style alpha of the last BeginDisabled(true) anywhere in the context
  (another window, an earlier frame): the swatch looks correct when that
  was 1.0f, and is drawn with an unrelated alpha when it ran under a pushed
  ImGuiStyleVar_Alpha.

So a swatch's appearance depends on whether, and under which alpha, some
unrelated widget was disabled earlier. Typical trigger is the
BeginDisabled(condition) idiom with the condition false, e.g.:

    ImGui::BeginDisabled(is_read_only); // false
    ImGui::ColorEdit3("##color", col, ImGuiColorEditFlags_NoInputs);
    ImGui::EndDisabled();

In a fresh context this draws an empty swatch frame; it starts showing the
color only after any other window draws a disabled item.

Fix: cancel out the dimming only while the Disabled item flag is set, i.e.
while an enclosing BeginDisabled(true) is in effect. DisabledAlphaBackup
then always holds the alpha that call saved, and inside BeginDisabled(false)
the swatch draws with the current style alpha, as any other widget does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 18:16:14 +02:00
ocornut
253aa51aba Drags: fixed handling of ImGuiSliderFlags_WrapAround when dragging fast. (#9612, #9611, #7749) 2026-11-05 12:38:19 +01:00
ocornut
1023d3ddaa InputText: fixed ImGuiInputTextCallbackData::InsertChars() mistakenly over growing internal buffer. (#9603, #7925)
Note that the 32-256 ranges may seem misleading because ImVector<> handle its growth policy but it is also the size we request to underlying user impl hence the clamps.
2026-10-30 17:32:06 +01:00
MilosLord
a13badd73e MultiSelect: fixed ImGuiSelectionBasicStorage::GetNextSelectedItem() reading past the end of storage when trailing items are unselected (#9604) 2026-10-30 16:04:17 +01:00
ocornut
80d572ce35 TreeNode: minor tidying up.
(should have no side-effect)
2026-10-27 18:10:59 +01:00
ocornut
1069a952e0 TabBar: Internals: added TabItemIsContentsAppearing() and reworked 50ae760. (#9581) 2026-10-27 16:32:36 +01:00
ocornut
50ae760fce TabBar: Internals: add tab_bar->VisibleTabContentsJustAppeared. (#9581) 2026-10-27 15:57:16 +01:00
ocornut
86b853ae8a TabBar: rename VisibleTabId->VisibleTabContentsId for clarify and correctness.
Toward #9581
2026-10-27 15:43:57 +01:00
Yaki Blake
2f1552d4d5 TreeNodeGetOpen(): added flags parameter. (#9569, #9592, #3823, #9251) 2026-10-27 15:23:55 +01:00
ocornut
726399ff76 Internals: RenderArrow: apply scale to horizontal offset. (#3895)
In the absence of a better standardized symbol/icon design this seem more consistent.
2026-10-27 13:56:16 +01:00
ocornut
4326411672 Internals: removed RenderArrowPointingAt(), moved to ColorPicker4 color. 2026-10-27 13:56:16 +01:00
ocornut
4c9c888fc5 Build: warning fixes for VS2015 and <v141. 2026-10-15 15:39:58 +02:00
ocornut
cbe3d5fb88 Version 1.93.1 WIP 2026-10-15 14:34:31 +02:00
ocornut
c1aaac65e8 Version 1.93.0 2026-10-14 17:55:08 +02:00
ocornut
09cd4416e8 PlotHistogram: fixed passing inverted coordinates to AddRectFilled(). 2026-10-13 16:20:49 +02:00
ocornut
0e756a649d (Breaking) DrawList: renamed ImDrawFlags_RoundCornersXXX to ImDrawFlags_RoundXXX. (#9504) 2026-10-07 18:53:55 +02:00
ocornut
ee66cfcdf3 TabBar: simpify TabItem rendering using stroke flags.
May tend toward using _StrokeInside more but _StrokeCenterBiased is closer to current behavior.
2026-10-07 18:53:54 +02:00
ocornut
5181e95a46 DrawList: removed g_LEGACY_STROKES. 2026-10-07 18:53:53 +02:00
ocornut
e8c8a10a2d DrawList: amends/review legacy stroke paths + minor tweaks. 2026-10-07 18:53:51 +02:00
Mikko Mononen
37f16412d5 Fixed layout/pixel-perfect issues in various widgets (w/ g_LEGACY_STROKES toggle). (#9504) 2026-10-07 18:53:49 +02:00
ocornut
580c00c316 InputText: fixed a crash using Home key with WordWrap+ReadOnly. (#9561)
Only the change in STB_TEXTEDIT_MOVELINESTART_IMPL() is required. The others are just for nicer semantic.
2026-09-28 17:47:39 +02:00
Brenton Bostick
e728936797 Docs: fixed typos/repeated words. (#9555) 2026-09-24 14:33:24 +02:00
ocornut
6d07f6eb09 Selectable: fixed ImGuiSelectableFlags_SelectOnNav triggering during NavInit.
Style Editor: fixed style/colors combo box applying style when opening Combo.
2026-09-18 15:49:00 +02:00
ocornut
5a0ac1678c Minor rename. 2026-09-17 21:09:14 +02:00
ocornut
b00dd14a34 TabBar: using <> scrolling buttons while the selected Tab is at either end of the section mid-section but not fully visible always makes it fully visible. 2026-09-14 19:50:43 +02:00
ocornut
c8b9f0d6be TabBar: Improved scroll target when clicking a Tab that is larger than the scrolling region width.
The margin that is useful to indicate other tabs being available gets in the way of visibility in this case.
2026-09-14 19:05:13 +02:00
ocornut
ea60e7b748 TabBar: added TabBarGetTabPos() helper.
# Conflicts:
#	imgui_internal.h
#	imgui_widgets.cpp
2026-09-14 15:56:57 +02:00
ocornut
e8602501bb Mixed Value: various fixes. (#5518, #5677, #6865)
- With MixedValue+LiveEdit: a single edit that ends up with same output reports as edited.
- Standardize path sin TempInputscalar(), InputScalar(), InputTextEx().
- Refer to changes in imgui_test_suite, in particular "widgets_datatype_1", "widgets_status_liveedit_off",
2026-09-09 20:44:34 +02:00
ocornut
ea6d21687b BeginComboPreview(): fixed issues with nesting. Previous comments were wrong. (#1658, #4168) 2026-09-08 21:52:23 +02:00
ocornut
db5b735a5d (Breaking) BeginComboPreview: removed ImGuiComboFlags_CustomPreview: now unnecessary + better detect issues (#1658, #4168) 2026-09-08 19:38:42 +02:00
ocornut
32c3f6095a BeginComboPreview: set/restore WorkRect.Max.x. (#1658, #4168) 2026-09-08 17:44:56 +02:00
ocornut
148d128f6e Mixed Value: use ImGuiCol_TextMixedValue (= ImGuiCol_TextDisabled). Set MixedValueLabel to null to display original value. (#5518, #5677, #6865) 2026-09-08 16:47:04 +02:00
ocornut
334f484892 ColorEdit4, ColorPicker4: added support for ImGuiItemFlags_MixedValue. (#5518, #5677, #6865) 2026-09-07 19:48:28 +02:00
ocornut
dd32dace81 InputText: using MixedValue automatically sets ImGuiInputTextFlags_AutoSelectAll. (#5518, #5677, #6865) 2026-09-07 19:09:24 +02:00
ocornut
04b37d6d23 Added ImGuiItemFlags_MixedValue support for Drags, Sliders, InputScalar, InputText, RadioButton, Combo. (#5518, #5677, #6865) 2026-09-07 18:56:32 +02:00
ocornut
687f7fb8ac Drags, Sliders: ongoing drags may be cancelled using Right-Mouse mouse button, reverting to the initial value. (#8564, #9534) 2026-09-07 16:16:55 +02:00
ocornut
96b6eb7728 Fixed PVS-Studio false positives.
Not sure if there's a way to report them.
2026-09-04 12:37:48 +02:00
ocornut
f150bf09f9 Drags, Sliders: ongoing drags may be cancelled using Escape or Gamepad Triangle, reverting to the initial value. (#8564, #9534) 2026-09-04 12:24:49 +02:00
ocornut
51c3c0c992 Sliders: moved code from SliderBehaviorT() to SliderBehavior().
Remove a level of indent too.
2026-09-03 17:28:48 +02:00
slowriot
7edd2b1f12
Sliders, Drags: adjust ScaleValueFromRatioT() to increase remapping precision (in theory). (#9536)
Omar: couldn't detect any output difference in test suite with large u64/s64 ranges drag/sliders.
I believe this is entirely theoretical and it's principal value is to shut Linter warnings
2026-09-03 15:42:24 +02:00
ocornut
1807b25b9a ScaleValueFromRatioT: removed unnecessary check, amend f27af1b20. 2026-09-03 15:29:37 +02:00
ocornut
a15761f11c TreeNode: fixed UB shifts and general tree issues when using ImGuiTreeNodeFlags_DrawLinesXXX flags and over 32 deep. (#9509)
+ fix minor typo (#9533)
2026-09-01 20:06:02 +02:00
ocornut
ebc7307db5 ColorButton, RenderColorRectWithAlphaCheckerboard: fixed issues/inconsistencies with checkerboard rendering when combining color alpha and global style alpha. (#9511)
Cleanup hacks in ColorButton(). Amend d851775c80a, e9ff7162b.
2026-08-31 18:04:03 +02:00
ocornut
fd74775a0d ColorButton: fixed double style alpha multiply. Remove call to GetColorU32() in RenderColorRectWithAlphaCheckerboard() for consistency. (#9511)
The main fix is the change from GetColorU32() to ColorConvertFloat4ToU32() in calling code.
The change from GetColorU32() to manual multiply in RenderColorRectWithAlphaCheckerboard() is merely for consistency with other ::Render calls.
2026-08-31 17:29:10 +02:00
ocornut
19ead810d2 ColorButton, ColorEdit, ColorPicker: cancel-out alpha caused by BeginDisabled() so disabled color buttons have the same color. (#9511) 2026-08-31 17:29:10 +02:00
ocornut
d3c5ff395c Drags, Sliders: fixed an overflow using ImGuiSliderFlags_Logarithmic with S32/S64 types. (#9526, #3361, #1823, #1316, #642) 2026-08-30 19:44:15 +02:00
ocornut
46d39d56fe Fixed GCC false positive. (#9508) 2026-08-07 18:42:39 +02:00
ocornut
551a0a6bc0 TextAligned, TextAlignedV: rework to always use provided width. (#7024, #9455, #1980) 2026-08-07 17:48:50 +02:00
ocornut
ebd752a0ec Version 1.93.0 WIP 2026-08-03 14:42:56 +02:00
ocornut
f1cc2ae15e Version 1.92.9b 2026-07-31 16:14:42 +02:00