Settings: Fixed an issue marking settings as dirty when merely clicking on a border or resize grip without moving it.
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 8a17ad0..0293c72 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -75,6 +75,8 @@
- ColorEdit4: Layout tweaks for very small sizes. (#7120, #7121)
- Menus: Tweaked hover slack logic, adding a timer to avoid situations where a slow vertical
movements toward another parent BeginMenu() can keep the wrong child menu open. (#6671, #6926)
+- Settings: Fixed an issue marking settings as dirty when merely clicking on a border or resize
+ grip without moving it.
- Debug Tools: Added DebugFlashStyleColor() to identify a style color. Added to Style Editor.
- Debug Tools: Debug Log: Hide its own clipper log to reduce noise in the output.
- Misc: Added IMGUI_USER_H_FILENAME to change the path included when using
diff --git a/imgui.cpp b/imgui.cpp
index dee3284..e94ea98 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -6050,15 +6050,17 @@
}
// Apply back modified position/size to window
- if (size_target.x != FLT_MAX)
+ const ImVec2 curr_pos = window->Pos;
+ const ImVec2 curr_size = window->SizeFull;
+ if (size_target.x != FLT_MAX && (window->Size.x != size_target.x || window->SizeFull.x != size_target.x))
window->Size.x = window->SizeFull.x = size_target.x;
- if (size_target.y != FLT_MAX)
+ if (size_target.y != FLT_MAX && (window->Size.y != size_target.y || window->SizeFull.y != size_target.y))
window->Size.y = window->SizeFull.y = size_target.y;
- if (pos_target.x != FLT_MAX)
+ if (pos_target.x != FLT_MAX && window->Pos.x != ImTrunc(pos_target.x))
window->Pos.x = ImTrunc(pos_target.x);
- if (pos_target.y != FLT_MAX)
+ if (pos_target.y != FLT_MAX && window->Pos.y != ImTrunc(pos_target.y))
window->Pos.y = ImTrunc(pos_target.y);
- if (size_target.x != FLT_MAX || size_target.y != FLT_MAX || pos_target.x != FLT_MAX || pos_target.y != FLT_MAX)
+ if (curr_pos.x != window->Pos.x || curr_pos.y != window->Pos.y || curr_size.x != window->SizeFull.x || curr_size.y != window->SizeFull.y)
MarkIniSettingsDirty(window);
// Recalculate next expected border expected coordinates