mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Internals: Renaming of non-user facing parts from ValueChanged to Edited terminology. (#2034, #820, #956, #1875)
This commit is contained in:
parent
042f88e5f0
commit
06e917f135
@ -145,8 +145,9 @@ Other Changes:
|
|||||||
- Some frameworks (such as the Allegro, Marmalade) handle both the "platform" and "rendering" part, and your custom engine may as well.
|
- Some frameworks (such as the Allegro, Marmalade) handle both the "platform" and "rendering" part, and your custom engine may as well.
|
||||||
- Read examples/README.txt for details.
|
- Read examples/README.txt for details.
|
||||||
- Added IsItemDeactivated() to query if the last item was active previously and isn't anymore. Useful for Undo/Redo patterns. (#820, #956, #1875)
|
- Added IsItemDeactivated() to query if the last item was active previously and isn't anymore. Useful for Undo/Redo patterns. (#820, #956, #1875)
|
||||||
- Added IsItemDeactivatedAfterChange() if the last item was active previously, isn't anymore, and during its active state modified a value.
|
- Added IsItemDeactivatedAfterChange() [*EDIT* renamed to IsItemDeactivatedAfterEdit() in 1.63) if the last item was active previously,
|
||||||
Note that you may still get false positive (e.g. drag value and while holding return on the same value). (#820, #956, #1875)
|
is not anymore, and during its active state modified a value. Note that you may still get false positive (e.g. drag value and while
|
||||||
|
holding return on the same value). (#820, #956, #1875)
|
||||||
- Nav: Added support for PageUp/PageDown (explorer-style: first aim at bottom/top most item, when scroll a page worth of contents). (#787)
|
- Nav: Added support for PageUp/PageDown (explorer-style: first aim at bottom/top most item, when scroll a page worth of contents). (#787)
|
||||||
- Nav: To keep the navigated item in view we also attempt to scroll the parent window as well as the current window. (#787)
|
- Nav: To keep the navigated item in view we also attempt to scroll the parent window as well as the current window. (#787)
|
||||||
- ColorEdit3, ColorEdit4, ColorButton: Added ImGuiColorEditFlags_NoDragDrop flag to disable ColorEditX as drag target and ColorButton as drag source. (#1826)
|
- ColorEdit3, ColorEdit4, ColorButton: Added ImGuiColorEditFlags_NoDragDrop flag to disable ColorEditX as drag target and ColorButton as drag source. (#1826)
|
||||||
|
40
imgui.cpp
40
imgui.cpp
@ -2269,7 +2269,7 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
|
|||||||
if (g.ActiveIdIsJustActivated)
|
if (g.ActiveIdIsJustActivated)
|
||||||
{
|
{
|
||||||
g.ActiveIdTimer = 0.0f;
|
g.ActiveIdTimer = 0.0f;
|
||||||
g.ActiveIdValueChanged = false;
|
g.ActiveIdHasBeenEdited = false;
|
||||||
if (id != 0)
|
if (id != 0)
|
||||||
{
|
{
|
||||||
g.LastActiveId = id;
|
g.LastActiveId = id;
|
||||||
@ -2338,7 +2338,7 @@ void ImGui::KeepAliveID(ImGuiID id)
|
|||||||
g.ActiveIdPreviousFrameIsAlive = true;
|
g.ActiveIdPreviousFrameIsAlive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui::MarkItemValueChanged(ImGuiID id)
|
void ImGui::MarkItemEdited(ImGuiID id)
|
||||||
{
|
{
|
||||||
// This marking is solely to be able to provide info for IsItemDeactivatedAfterEdit().
|
// This marking is solely to be able to provide info for IsItemDeactivatedAfterEdit().
|
||||||
// ActiveId might have been released by the time we call this (as in the typical press/release button behavior) but still need need to fill the data.
|
// ActiveId might have been released by the time we call this (as in the typical press/release button behavior) but still need need to fill the data.
|
||||||
@ -2346,8 +2346,8 @@ void ImGui::MarkItemValueChanged(ImGuiID id)
|
|||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
IM_ASSERT(g.ActiveId == id || g.ActiveId == 0 || g.DragDropActive);
|
IM_ASSERT(g.ActiveId == id || g.ActiveId == 0 || g.DragDropActive);
|
||||||
//IM_ASSERT(g.CurrentWindow->DC.LastItemId == id);
|
//IM_ASSERT(g.CurrentWindow->DC.LastItemId == id);
|
||||||
g.ActiveIdValueChanged = true;
|
g.ActiveIdHasBeenEdited = true;
|
||||||
g.CurrentWindow->DC.LastItemStatusFlags |= ImGuiItemStatusFlags_ValueChanged;
|
g.CurrentWindow->DC.LastItemStatusFlags |= ImGuiItemStatusFlags_Edited;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFlags flags)
|
static inline bool IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFlags flags)
|
||||||
@ -3954,7 +3954,7 @@ void ImGui::NewFrame()
|
|||||||
g.LastActiveIdTimer += g.IO.DeltaTime;
|
g.LastActiveIdTimer += g.IO.DeltaTime;
|
||||||
g.ActiveIdPreviousFrame = g.ActiveId;
|
g.ActiveIdPreviousFrame = g.ActiveId;
|
||||||
g.ActiveIdPreviousFrameWindow = g.ActiveIdWindow;
|
g.ActiveIdPreviousFrameWindow = g.ActiveIdWindow;
|
||||||
g.ActiveIdPreviousFrameValueChanged = g.ActiveIdValueChanged;
|
g.ActiveIdPreviousFrameHasBeenEdited = g.ActiveIdHasBeenEdited;
|
||||||
g.ActiveIdIsAlive = 0;
|
g.ActiveIdIsAlive = 0;
|
||||||
g.ActiveIdPreviousFrameIsAlive = false;
|
g.ActiveIdPreviousFrameIsAlive = false;
|
||||||
g.ActiveIdIsJustActivated = false;
|
g.ActiveIdIsJustActivated = false;
|
||||||
@ -5209,7 +5209,7 @@ bool ImGui::IsItemDeactivated()
|
|||||||
bool ImGui::IsItemDeactivatedAfterEdit()
|
bool ImGui::IsItemDeactivatedAfterEdit()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
return IsItemDeactivated() && (g.ActiveIdPreviousFrameValueChanged || (g.ActiveId == 0 && g.ActiveIdValueChanged));
|
return IsItemDeactivated() && (g.ActiveIdPreviousFrameHasBeenEdited || (g.ActiveId == 0 && g.ActiveIdHasBeenEdited));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::IsItemFocused()
|
bool ImGui::IsItemFocused()
|
||||||
@ -5250,7 +5250,7 @@ bool ImGui::IsItemVisible()
|
|||||||
bool ImGui::IsItemEdited()
|
bool ImGui::IsItemEdited()
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindowRead();
|
ImGuiWindow* window = GetCurrentWindowRead();
|
||||||
return (window->DC.LastItemStatusFlags & ImGuiItemStatusFlags_ValueChanged) != 0;
|
return (window->DC.LastItemStatusFlags & ImGuiItemStatusFlags_Edited) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow last item to be overlapped by a subsequent item. Both may be activated during the same frame before the later one takes priority.
|
// Allow last item to be overlapped by a subsequent item. Both may be activated during the same frame before the later one takes priority.
|
||||||
@ -8294,7 +8294,7 @@ bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags
|
|||||||
bool hovered, held;
|
bool hovered, held;
|
||||||
bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);
|
bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);
|
||||||
if (pressed)
|
if (pressed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
|
const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
|
||||||
@ -9635,7 +9635,7 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* v, co
|
|||||||
ImRect grab_bb;
|
ImRect grab_bb;
|
||||||
const bool value_changed = SliderBehavior(frame_bb, id, data_type, v, v_min, v_max, format, power, ImGuiSliderFlags_None, &grab_bb);
|
const bool value_changed = SliderBehavior(frame_bb, id, data_type, v, v_min, v_max, format, power, ImGuiSliderFlags_None, &grab_bb);
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
// Render grab
|
// Render grab
|
||||||
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, GetColorU32(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab), style.GrabRounding);
|
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, GetColorU32(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab), style.GrabRounding);
|
||||||
@ -9701,7 +9701,7 @@ bool ImGui::VSliderScalar(const char* label, const ImVec2& size, ImGuiDataType d
|
|||||||
ImRect grab_bb;
|
ImRect grab_bb;
|
||||||
const bool value_changed = SliderBehavior(frame_bb, id, data_type, v, v_min, v_max, format, power, ImGuiSliderFlags_Vertical, &grab_bb);
|
const bool value_changed = SliderBehavior(frame_bb, id, data_type, v, v_min, v_max, format, power, ImGuiSliderFlags_Vertical, &grab_bb);
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
// Render grab
|
// Render grab
|
||||||
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, GetColorU32(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab), style.GrabRounding);
|
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, GetColorU32(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab), style.GrabRounding);
|
||||||
@ -9982,7 +9982,7 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* v, floa
|
|||||||
ItemSize(total_bb, style.FramePadding.y);
|
ItemSize(total_bb, style.FramePadding.y);
|
||||||
const bool value_changed = DragBehavior(id, data_type, v, v_speed, v_min, v_max, format, power);
|
const bool value_changed = DragBehavior(id, data_type, v, v_speed, v_min, v_max, format, power);
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
// Draw frame
|
// Draw frame
|
||||||
const ImU32 frame_col = GetColorU32(g.ActiveId == id ? ImGuiCol_FrameBgActive : g.HoveredId == id ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg);
|
const ImU32 frame_col = GetColorU32(g.ActiveId == id ? ImGuiCol_FrameBgActive : g.HoveredId == id ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg);
|
||||||
@ -10333,7 +10333,7 @@ bool ImGui::Checkbox(const char* label, bool* v)
|
|||||||
if (pressed)
|
if (pressed)
|
||||||
{
|
{
|
||||||
*v = !(*v);
|
*v = !(*v);
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderNavHighlight(total_bb, id);
|
RenderNavHighlight(total_bb, id);
|
||||||
@ -10403,7 +10403,7 @@ bool ImGui::RadioButton(const char* label, bool active)
|
|||||||
bool hovered, held;
|
bool hovered, held;
|
||||||
bool pressed = ButtonBehavior(total_bb, id, &hovered, &held);
|
bool pressed = ButtonBehavior(total_bb, id, &hovered, &held);
|
||||||
if (pressed)
|
if (pressed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
RenderNavHighlight(total_bb, id);
|
RenderNavHighlight(total_bb, id);
|
||||||
window->DrawList->AddCircleFilled(center, radius, GetColorU32((held && hovered) ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg), 16);
|
window->DrawList->AddCircleFilled(center, radius, GetColorU32((held && hovered) ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg), 16);
|
||||||
@ -11384,7 +11384,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
|
|||||||
RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
|
RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
|
||||||
|
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
if ((flags & ImGuiInputTextFlags_EnterReturnsTrue) != 0)
|
if ((flags & ImGuiInputTextFlags_EnterReturnsTrue) != 0)
|
||||||
return enter_pressed;
|
return enter_pressed;
|
||||||
@ -11851,7 +11851,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl
|
|||||||
SetNavID(id, window->DC.NavLayerCurrent);
|
SetNavID(id, window->DC.NavLayerCurrent);
|
||||||
}
|
}
|
||||||
if (pressed)
|
if (pressed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
if (hovered || selected)
|
if (hovered || selected)
|
||||||
@ -11984,7 +11984,7 @@ bool ImGui::ListBox(const char* label, int* current_item, bool (*items_getter)(v
|
|||||||
}
|
}
|
||||||
ListBoxFooter();
|
ListBoxFooter();
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(g.CurrentWindow->DC.LastItemId);
|
MarkItemEdited(g.CurrentWindow->DC.LastItemId);
|
||||||
|
|
||||||
return value_changed;
|
return value_changed;
|
||||||
}
|
}
|
||||||
@ -12451,7 +12451,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
|
|||||||
ColorTooltip(desc_id, &col.x, flags & (ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf));
|
ColorTooltip(desc_id, &col.x, flags & (ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf));
|
||||||
|
|
||||||
if (pressed)
|
if (pressed)
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
|
|
||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
@ -12748,7 +12748,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
window->DC.LastItemId = g.ActiveId;
|
window->DC.LastItemId = g.ActiveId;
|
||||||
|
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(window->DC.LastItemId);
|
MarkItemEdited(window->DC.LastItemId);
|
||||||
|
|
||||||
return value_changed;
|
return value_changed;
|
||||||
}
|
}
|
||||||
@ -13064,7 +13064,7 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
|||||||
if (value_changed && memcmp(backup_initial_col, col, components * sizeof(float)) == 0)
|
if (value_changed && memcmp(backup_initial_col, col, components * sizeof(float)) == 0)
|
||||||
value_changed = false;
|
value_changed = false;
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
MarkItemValueChanged(window->DC.LastItemId);
|
MarkItemEdited(window->DC.LastItemId);
|
||||||
|
|
||||||
PopID();
|
PopID();
|
||||||
|
|
||||||
@ -13184,7 +13184,7 @@ bool ImGui::SplitterBehavior(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float
|
|||||||
*size1 += mouse_delta;
|
*size1 += mouse_delta;
|
||||||
*size2 -= mouse_delta;
|
*size2 -= mouse_delta;
|
||||||
bb_render.Translate((axis == ImGuiAxis_X) ? ImVec2(mouse_delta, 0.0f) : ImVec2(0.0f, mouse_delta));
|
bb_render.Translate((axis == ImGuiAxis_X) ? ImVec2(mouse_delta, 0.0f) : ImVec2(0.0f, mouse_delta));
|
||||||
MarkItemValueChanged(id);
|
MarkItemEdited(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,7 +269,7 @@ enum ImGuiItemStatusFlags_
|
|||||||
ImGuiItemStatusFlags_None = 0,
|
ImGuiItemStatusFlags_None = 0,
|
||||||
ImGuiItemStatusFlags_HoveredRect = 1 << 0,
|
ImGuiItemStatusFlags_HoveredRect = 1 << 0,
|
||||||
ImGuiItemStatusFlags_HasDisplayRect = 1 << 1,
|
ImGuiItemStatusFlags_HasDisplayRect = 1 << 1,
|
||||||
ImGuiItemStatusFlags_ValueChanged = 1 << 2 // Value exposed by item was edited in the current frame (should match the bool return value of most widgets)
|
ImGuiItemStatusFlags_Edited = 1 << 2 // Value exposed by item was edited in the current frame (should match the bool return value of most widgets)
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME: this is in development, not exposed/functional as a generic feature yet.
|
// FIXME: this is in development, not exposed/functional as a generic feature yet.
|
||||||
@ -649,9 +649,9 @@ struct ImGuiContext
|
|||||||
float ActiveIdTimer;
|
float ActiveIdTimer;
|
||||||
bool ActiveIdIsJustActivated; // Set at the time of activation for one frame
|
bool ActiveIdIsJustActivated; // Set at the time of activation for one frame
|
||||||
bool ActiveIdAllowOverlap; // Active widget allows another widget to steal active id (generally for overlapping widgets, but not always)
|
bool ActiveIdAllowOverlap; // Active widget allows another widget to steal active id (generally for overlapping widgets, but not always)
|
||||||
bool ActiveIdValueChanged; // Was the value associated to the widget changed over the course of the Active state.
|
bool ActiveIdHasBeenEdited; // Was the value associated to the widget Edited over the course of the Active state.
|
||||||
bool ActiveIdPreviousFrameIsAlive;
|
bool ActiveIdPreviousFrameIsAlive;
|
||||||
bool ActiveIdPreviousFrameValueChanged;
|
bool ActiveIdPreviousFrameHasBeenEdited;
|
||||||
int ActiveIdAllowNavDirFlags; // Active widget allows using directional navigation (e.g. can activate a button and move away from it)
|
int ActiveIdAllowNavDirFlags; // Active widget allows using directional navigation (e.g. can activate a button and move away from it)
|
||||||
ImVec2 ActiveIdClickOffset; // Clicked offset from upper-left corner, if applicable (currently only set by ButtonBehavior)
|
ImVec2 ActiveIdClickOffset; // Clicked offset from upper-left corner, if applicable (currently only set by ButtonBehavior)
|
||||||
ImGuiWindow* ActiveIdWindow;
|
ImGuiWindow* ActiveIdWindow;
|
||||||
@ -796,9 +796,9 @@ struct ImGuiContext
|
|||||||
ActiveIdTimer = 0.0f;
|
ActiveIdTimer = 0.0f;
|
||||||
ActiveIdIsJustActivated = false;
|
ActiveIdIsJustActivated = false;
|
||||||
ActiveIdAllowOverlap = false;
|
ActiveIdAllowOverlap = false;
|
||||||
ActiveIdValueChanged = false;
|
ActiveIdHasBeenEdited = false;
|
||||||
ActiveIdPreviousFrameIsAlive = false;
|
ActiveIdPreviousFrameIsAlive = false;
|
||||||
ActiveIdPreviousFrameValueChanged = false;
|
ActiveIdPreviousFrameHasBeenEdited = false;
|
||||||
ActiveIdAllowNavDirFlags = 0;
|
ActiveIdAllowNavDirFlags = 0;
|
||||||
ActiveIdClickOffset = ImVec2(-1,-1);
|
ActiveIdClickOffset = ImVec2(-1,-1);
|
||||||
ActiveIdWindow = ActiveIdPreviousFrameWindow = NULL;
|
ActiveIdWindow = ActiveIdPreviousFrameWindow = NULL;
|
||||||
@ -1128,7 +1128,7 @@ namespace ImGui
|
|||||||
IMGUI_API ImGuiID GetHoveredID();
|
IMGUI_API ImGuiID GetHoveredID();
|
||||||
IMGUI_API void SetHoveredID(ImGuiID id);
|
IMGUI_API void SetHoveredID(ImGuiID id);
|
||||||
IMGUI_API void KeepAliveID(ImGuiID id);
|
IMGUI_API void KeepAliveID(ImGuiID id);
|
||||||
IMGUI_API void MarkItemValueChanged(ImGuiID id);
|
IMGUI_API void MarkItemEdited(ImGuiID id);
|
||||||
|
|
||||||
// Basic Helpers for widget code
|
// Basic Helpers for widget code
|
||||||
IMGUI_API void ItemSize(const ImVec2& size, float text_offset_y = 0.0f);
|
IMGUI_API void ItemSize(const ImVec2& size, float text_offset_y = 0.0f);
|
||||||
|
Loading…
Reference in New Issue
Block a user